Ho la seguente tabella in Postgres:postgres autoincrement non aggiornato su esplicita id inserisce
CREATE TABLE "test" (
"id" serial NOT NULL PRIMARY KEY,
"value" text
)
sto facendo seguenti inserimenti:
insert into test (id, value) values (1, 'alpha')
insert into test (id, value) values (2, 'beta')
insert into test (value) values ('gamma')
Nei primi 2 inserti sto esplicitamente menzionare il id . Tuttavia il puntatore di incremento automatico della tabella non viene aggiornato in questo caso. Quindi nel terzo inserto ottengo l'errore:
ERROR: duplicate key value violates unique constraint "test_pkey"
DETAIL: Key (id)=(1) already exists.
non ho mai affrontato questo problema in Mysql in entrambi i motori MyISAM e InnoDB. Esplicito o no, mysql aggiorna sempre il puntatore autoincrement in base all'ID riga massima.
Qual è la soluzione alternativa a questo problema in Postgres? Ne ho bisogno perché voglio un controllo più stretto per alcuni ID nel mio tavolo.
UPDATE: Ho bisogno perché per alcuni valori ho bisogno di avere un id fisso. Per altre nuove voci non mi preoccupo di crearne di nuove.
ritengo sia possibile incrementando manualmente il puntatore nextval
di max(id) + 1
ogni volta che inserisco esplicitamente i ids. Ma non sono sicuro di come farlo.
@ Grazie Milen-a-Radev +1, che ha fatto! – jerrymouse
Strano comportamento. Vengo anche da MySQL. Grazie! –
Mi sono imbattuto nello stesso problema e tra te e http://www.ruby-forum.com/topic/64428#72333 (in pratica dici la stessa cosa) hai risolto il problema. Grazie. – marsol0x