以下代码创建了一个表,但没有引发任何错误:
CREATE TABLE test(
ID INTEGER NULL,
CONSTRAINT PK_test PRIMARY KEY(ID)
)
请注意,我不能像预期的那样插入空值:
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列作为主键的一部分显式声明为可空,而隐式声明为不可空.这有意义吗?
编辑:如果这个自相矛盾的创建表失败了,不是更好吗?