Comment est-ce que je supprime le «id» dans cette table d'incrémenter quand une erreur se produit?incrémentation sur les erreurs
db=> CREATE TABLE test (id serial primary key, info text, UNIQUE(info));
NOTICE: CREATE TABLE will create implicit sequence "test_id_seq" for serial column "test.id"
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index "test_pkey" for table "test"
NOTICE: CREATE TABLE/UNIQUE will create implicit index "test_info_key" for table "test"
CREATE TABLE
db=> INSERT INTO test (info) VALUES ('hello') ;
INSERT 0 1
db=> INSERT INTO test (info) VALUES ('hello') ;
ERROR: duplicate key violates unique constraint "test_info_key"
db=> INSERT INTO test (info) VALUES ('hello') ;
ERROR: duplicate key violates unique constraint "test_info_key"
db=> INSERT INTO test (info) VALUES ('goodbye') ;
INSERT 0 1
db=> SELECT * from test; SELECT last_value from test_id_seq;
id | info
----+---------
1 | hello
4 | goodbye
(2 rows)
last_value
------------
4
(1 row)
Pouvez-vous expliquer pourquoi cela est un problème pour vous? – intgr
J'ai remarqué le saut dans la séquence d'id lorsque je vidais une base de données distante plus petite dans une base de données master plus grande. Initialement, j'ai omis le 'id' dans la table et je me suis appuyé uniquement sur –
... Initialement, j'ai omis le 'id' dans la table et je me suis appuyé uniquement sur la valeur de la clé UNIQUE. Cela a empêché la création de lignes dupliquées lors de l'insertion des mêmes lignes. –