【发布时间】:2015-01-16 00:40:27
【问题描述】:
考虑下表:
CREATE TABLE user(
first_name text,
last_name text,
...
)
我希望能够添加具有名字、姓氏或两者的用户 - 但我不允许没有任何名字的用户。换句话说(感谢@wildplasser)- 至少一列不应该为 NULL。
INSERT INTO user(first_name, last_name) VALUES ("foo", NULL); # 1. OK
INSERT INTO user(first_name, last_name) VALUES ("foo", "bar"); # 2. OK
INSERT INTO user(first_name, last_name) VALUES (NULL, "bar"); # 3. OK
INSERT INTO user(first_name, last_name) VALUES (NULL, NULL); # 4. NOT OK
显然,每列上的 NOT NULL 约束将禁用示例 2 和 3。
如何在 SQL 中对一组列表示 NOT NULL 约束?
【问题讨论】:
-
一种方法是创建一个检查两列的触发器,如果两列都为空,则引发异常。
-
你的意思是:至少其中一列应该是 BOT NULL ?
-
会this 帮忙吗?
-
[我的意思是:显然不是 NULL] 不能由列约束强加,因为它只能引用 one 列。所以:你需要一个触发器,恕我直言。
-
我认为这里已经回答了这个问题:stackoverflow.com/questions/21021102/…
标签: sql postgresql constraints