Mam tabelę, która jest tworzona w ten sposób:
--
-- 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")
);
Później wstawiane są niektóre wiersze określające identyfikator:
INSERT INTO "jos_content" VALUES (1,36,'About',...)
W późniejszym momencie niektóre rekordy są wstawiane bez identyfikatora i one niepowodzeniem z błędem:
Error: duplicate key value violates unique constraint
.
Najwyraźniej identyfikator został zdefiniowany jako sekwencja:
Każde nieudane wstawienie zwiększa wskaźnik w sekwencji, aż zwiększy się do wartości, która już nie istnieje, a zapytania zakończą się powodzeniem.
SELECT nextval('jos_content_id_seq'::regclass)
Co jest złego w definicji tabeli? Jaki jest sprytny sposób to naprawić?