sql >> Databáze >  >> RDS >> PostgreSQL

Proč se sekvence neaktualizují, když se v PostgreSQL provádí COPY?

Ptáte se:

Ano, měli byste, jak zde zdokumentováno :

Píšete:

Ale není tomu tak! :) Když provedete normální INSERT, obvykle nezadáte explicitní hodnotu primárního klíče zálohovaného SEKVENCÍ. Pokud byste to udělali, narazili byste na stejné problémy, jaké máte nyní:

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.

Váš příkaz COPY samozřejmě poskytuje explicitní id hodnotu, stejně jako výše uvedený příklad INSERT.



  1. Jak funguje funkce SPACE() na serveru SQL Server (T-SQL)

  2. Kontingenční dynamické sloupce, žádná agregace

  3. Vypršel časový limit požadavku na připojení ODP.NET

  4. Odstranění poslední čárky v cyklu while - PHP