SQL: 对一组列的 NOT NULL 约束

SQL: NOT NULL constraint on a set of columns

考虑以下 table:

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

您可以使用查询

比如像这样

INSERT INTO user(first_name) VALUES (NULL);

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

时,lastname 将是 NULL

希望有所帮助 谢谢

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