Ho una tabella creata in questo modo:
--
-- Table: #__content
--
CREATE TABLE "jos_content" (
"id" serial NOT NULL,
"asset_id" bigint DEFAULT 0 NOT NULL,
...
"xreference" varchar(50) DEFAULT '' NOT NULL,
PRIMARY KEY ("id")
);
Successivamente vengono inserite alcune righe specificando l'id:
INSERT INTO "jos_content" VALUES (1,36,'About',...)
In un momento successivo alcuni record vengono inseriti senza id e falliscono con l'errore:
Error: duplicate key value violates unique constraint
.
Apparentemente l'id è stato definito come una sequenza:
Ogni inserimento non riuscito aumenta il puntatore nella sequenza fino a quando non aumenta a un valore che non esiste più e le query hanno esito positivo.
SELECT nextval('jos_content_id_seq'::regclass)
Cosa c'è di sbagliato nella definizione della tabella? Qual è il modo intelligente per risolvere questo problema?