只有在Postgresql中列不为null时,如何强制执行约束?

只有在Postgresql中列不为null时,如何强制执行约束?,第1张

概述我想要一个解决方案,只有当列不为null时才强制执行约束.我似乎无法在文档中找到这样做的方法. create table mytable( table_identifier_a INTEGER, table_identifier_b INTEGER, table_value1,...) 根据数据的性质,我将在创建表时使用标识符b和值.在我们收到其他数据后,我将能够填充标识符a.此时我想 我想要一个解决方案,只有当列不为null时才强制执行约束.我似乎无法在文档中找到这样做的方法.
create table mytable(  table_IDentifIEr_a INTEGER,table_IDentifIEr_b INTEGER,table_value1,...)

根据数据的性质,我将在创建表时使用标识符b和值.在我们收到其他数据后,我将能够填充标识符a.此时我想确保(IDentifIEr_a,value1)的唯一键,但仅限于IDentifIEr_a存在.

希望这是有道理的,任何人都有任何想法?

嗯.唯一约束不会阻止多个NulL值.
CREATE table mytable (    table_IDentifIEr_a   INTEGER    NulL,table_IDentifIEr_b   INTEGER    NOT NulL,table_value1         INTEGER    NOT NulL,UNIQUE(table_IDentifIEr_a,table_IDentifIEr_b));

请注意,即使在IDentifIEr_b时,我们也可以将多个NulL插入其中
火柴:

test=# INSERT INTO mytable values(NulL,1,2);INSERT 0 1test=# INSERT INTO mytable values(NulL,2);INSERT 0 1test=# select * from mytable; table_IDentifIEr_a | table_IDentifIEr_b | table_value1 --------------------+--------------------+--------------                    |                  1 |            2                    |                  1 |            2(2 rows)

但是我们不能创建重复的(a,b)对:

test=# update mytable set table_IDentifIEr_a = 3;ERROR:  duplicate key value violates unique constraint "mytable_table_IDentifIEr_a_key"

当然,您确实遇到了问题:您的表没有主键.您可能有数据模型问题.但是你提供的不够细节来解决这个问题.

总结

以上是内存溢出为你收集整理的只有在Postgresql中列不为null时,如何强制执行约束?全部内容,希望文章能够帮你解决只有在Postgresql中列不为null时,如何强制执行约束?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1170106.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-02
下一篇2022-06-02

发表评论

登录后才能评论

评论列表(0条)

    保存