以下代码创建一个表而不会引发任何错误:
CREATE TABLE test(
ID INTEGER NULL,
CONSTRAINT PK_test PRIMARY KEY(ID)
)
请注意,我无法按预期插入 NULL:
INSERT INTO test
VALUES(1),(NULL)
ERROR: null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null).
********** Error **********
ERROR: null value in column "id" violates not-null constraint
SQL state: 23502
Detail: Failing row contains (null).
为什么我可以创建一个定义自相矛盾的表?ID 列被显式声明为 NULLable,并且作为 PRIMARY KEY 的一部分,它隐含地不可为空。是否有意义?
编辑:如果这个自相矛盾的 CREATE TABLE 就在那里失败了不是更好吗?