SQL:对一组列的NOT NULL约束

时间:2015-01-16 00:40:28

标签: sql postgresql constraints

考虑下表:

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约束?

2 个答案:

答案 0 :(得分:1)

CREATE TABLE user(
   first_name text,
   last_name text,
   ...,
   CHECK (first_name IS NOT NULL OR last_name IS NOT NULL)
)

答案 1 :(得分:0)

您可以使用查询

例如像这样

INSERT INTO user(first_name) VALUES (NULL);

当数据库架构设置列lastname允许NULL

时,lastname将为NULL

希望有所帮助 感谢