sql - Postgres GENERATED AS IDENTITY 列可空性
问题描述
我想创建一个表,其中包含一个可以为空的列GENERATED BY DEFAULT AS IDENTITY
,因此我运行以下查询:
CREATE TABLE my_table (
generated INTEGER NULL GENERATED BY DEFAULT AS IDENTITY,
data TEXT NOT NULL
);
但是一旦我尝试在表中插入一行,哪个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 开发人员告诉我这是一个错误,因为身份列不应该为空(请参阅响应下的补丁文件)。
推荐阅读
- python - 在 drf 中使用请求方法时收到 typeerror
- bash - 即使登录 shell 是 /bin/bash,也不能 su 到 jenkins
- prolog - 从跟踪中隐藏模块/包
- python - 如何更改 QTreeWidget 项的父项
- python - TypeError:“InputDevice”对象不可迭代
- java - 尝试在 Kubernetes 中部署 Cassandra 时出现 Java 致命错误
- sparql - Sparql 查找具有 dbo 类型的实体并按计数对其进行排序
- javascript - 从 Javascript 中的数组中删除重复项(不修改数组) - 了解背后的逻辑
- jenkins - 我如何更改参数以在 jbehave 的 jenkins 中运行特定的故事文件
- javascript - 使用 Axios 执行本地 PHP 文件