sql >> Database >  >> RDS >> PostgreSQL

Waarom worden sequenties niet bijgewerkt wanneer COPY wordt uitgevoerd in PostgreSQL?

Je vraagt:

Ja, dat zou je moeten doen, zoals hier gedocumenteerd :

Je schrijft:

Maar dat is niet zo! :) Wanneer u een normale INSERT uitvoert, specificeert u meestal geen expliciete waarde voor de door SEQUENCE ondersteunde primaire sleutel. Als je dat deed, zou je dezelfde problemen tegenkomen als je nu hebt:

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.

Uw COPY-commando levert natuurlijk een expliciete id waarde, net als in het voorbeeld INSERT hierboven.



  1. Ontwikkelaarstools om rechtstreeks toegang te krijgen tot databases

  2. oracle sql plus spoel

  3. Aankondiging van ClusterControl 1.5 - met automatische back-upverificatie en cloud-upload

  4. gegevensoverdracht van de ene database naar de andere database in odoo