Postgres GENERATED AS IDENTITY 列的可空性
Postgres GENERATED AS IDENTITY column nullability
我想创建一个 table,其中包含一个具有 GENERATED BY DEFAULT AS IDENTITY
选项的可为空的列,因此我 运行 以下查询:
CREATE TABLE my_table (
generated INTEGER NULL GENERATED BY DEFAULT AS IDENTITY,
data TEXT NOT NULL
);
但是一旦我尝试在 table 中插入一行,generated
字段是 null
,就像这样:
INSERT INTO my_table(generated, data) VALUES(NULL, "some data");
我收到一个违反空约束的错误。
但是,如果我更改 my_table.generated
列属性的顺序:
CREATE TABLE my_table (
generated INTEGER GENERATED BY DEFAULT AS IDENTITY NULL,
data TEXT NOT NULL
);
它插入行,生成的字段是 NULL
,没有任何问题。
这是案例的预期行为吗?
Postgres 开发人员告诉我这是一个错误,因为标识列不应该为空(请参阅 response 下的补丁文件)。
我想创建一个 table,其中包含一个具有 GENERATED BY DEFAULT AS IDENTITY
选项的可为空的列,因此我 运行 以下查询:
CREATE TABLE my_table (
generated INTEGER NULL GENERATED BY DEFAULT AS IDENTITY,
data TEXT NOT NULL
);
但是一旦我尝试在 table 中插入一行,generated
字段是 null
,就像这样:
INSERT INTO my_table(generated, data) VALUES(NULL, "some data");
我收到一个违反空约束的错误。
但是,如果我更改 my_table.generated
列属性的顺序:
CREATE TABLE my_table (
generated INTEGER GENERATED BY DEFAULT AS IDENTITY NULL,
data TEXT NOT NULL
);
它插入行,生成的字段是 NULL
,没有任何问题。
这是案例的预期行为吗?
Postgres 开发人员告诉我这是一个错误,因为标识列不应该为空(请参阅 response 下的补丁文件)。