相关疑难解决方法(0)

为什么我可以在可空列上创建一个带有PRIMARY KEY的表?

以下代码创建表而不引发任何错误:

CREATE TABLE test(
ID INTEGER NULL,
CONSTRAINT PK_test PRIMARY KEY(ID)
)
Run Code Online (Sandbox Code Playgroud)

请注意,我无法按预期插入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).
Run Code Online (Sandbox Code Playgroud)

为什么我可以创建一个具有自相矛盾定义的表格?ID列显式声明为NULLable,并且作为PRIMARY KEY的一部分,它隐式地不可为空.是否有意义?

编辑:如果这个自相矛盾的CREATE TABLE在那里失败了会不会更好?

postgresql ddl constraints primary-key postgresql-9.3

24
推荐指数
1
解决办法
1万
查看次数