PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Защо последователностите не се актуализират, когато COPY се изпълнява в PostgreSQL?

Вие питате:

Да, трябва, както документирано тук :

Вие пишете:

Но не е така! :) Когато извършвате нормално 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 по-горе.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Деклариране на структурата на кортежа на запис в PL/pgSQL

  2. JSONB прави ли PostgreSQL масивите безполезни?

  3. Ltree модулът на PostgreSQL подходящ ли е за резбови коментари?

  4. Ef core 5 много към много филтър

  5. Оптимизация на заявки в PostgreSQL. EXPLAIN Basics – Част 2