小编dan*_*woz的帖子

使用默认关键字插入多行时,PostgreSQL 10 标识列获得“空值”

我最近从 PostgreSQL 9.5 升级到 PostgreSQL 10。PostgreSQL 10 中的一个漂亮特性是新的标识列类型,它是 PostgreSQL串行伪类型的替代品。身份栏的官方文档可以在CREATE TABLE一页中找到。

但是,当将多行插入到带有GENERATED BY DEFAULT AS IDENTITY列的表中使用关键字DEFAULT获取下一个 ID 值时,默认值返回为null.

例如,假设我有一张桌子

CREATE TABLE test (
  id int GENERATED BY DEFAULT AS IDENTITY,
  t text
);
CREATE TABLE
Run Code Online (Sandbox Code Playgroud)

使用DEFAULT关键字插入单行似乎工作正常。

INSERT INTO test (id, t) VALUES (DEFAULT, 'a');
INSERT 0 1
Run Code Online (Sandbox Code Playgroud)

插入多行不会。

INSERT INTO test (id, t) VALUES (DEFAULT, 'b'), (DEFAULT, 'c');
ERROR:  null value in column "id" violates …
Run Code Online (Sandbox Code Playgroud)

postgresql identity postgresql-10

7
推荐指数
1
解决办法
1987
查看次数

标签 统计

identity ×1

postgresql ×1

postgresql-10 ×1