あなたは尋ねます:
はい、ここに記載されています :
あなたが書く:
しかし、そうではありません! :)通常のINSERTを実行するときは、通常、SEQUENCEで裏付けられた主キーに明示的な値を指定しません。そうした場合、現在発生しているのと同じ問題が発生します。
postgres=> create table uh_oh (id serial not null primary key, data char(1));
NOTICE: CREATE TABLE will create implicit sequence "uh_oh_id_seq" for serial column "uh_oh.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "uh_oh_pkey" for table "uh_oh"
CREATE TABLE
postgres=> insert into uh_oh (id, data) values (1, 'x');
INSERT 0 1
postgres=> insert into uh_oh (data) values ('a');
ERROR: duplicate key value violates unique constraint "uh_oh_pkey"
DETAIL: Key (id)=(1) already exists.
もちろん、COPYコマンドは明示的なid
を提供しています。 上記のINSERTの例のように、値。