今天我可能工作过度,但我还是不理解这种情况。一定是我简单地忽略了某些愚蠢的东西。
表格结构如下:
CREATE TABLE sample_table (
id int8 NOT NULL GENERATED ALWAYS AS IDENTITY,
name varchar(255) NOT NULL,
description text NOT NULL,
CONSTRAINT sample_table_pk PRIMARY KEY (id)
);
当我尝试插入单个值时,它能够正常工作:
INSERT INTO sample_table (id, name, description)
VALUES (DEFAULT, 'John Doe', 'Test description');
然而,当插入多个值时,会失败:
INSERT INTO sample_table (id, name, description)
VALUES (DEFAULT, 'John Doe', 'Test description')
, (DEFAULT, 'Jane Eod', 'Not working');
为什么?如果我省略DEFAULT值和PK(=id),它运行得很好。
INSERT INTO sample_table (name, description)
VALUES ('John Doe', 'Test description')
, ('Jane Eod', 'Not working');
为什么批量插入中DEFAULT无法工作?
PSQL版本:PostgreSQL 11.13(Debian 11.13-1.pgdg100+1)在x86_64-pc-linux-gnu上,由gcc(Debian 8.3.0-6)编译的8.3.0,64位。
更新:
已由PGSQL团队接受为错误,并在v14中修复..希望他们会传播到所有其他稳定版本..关于此事有激烈的讨论 :))