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 下的补丁文件)。