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)
)
考虑以下 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)
)