Tengo una tabla que se crea de esta manera:
--
-- 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")
);
Más tarde se insertan algunas filas especificando la identificación:
INSERT INTO "jos_content" VALUES (1,36,'About',...)
En un momento posterior se insertan algunos registros sin identificación y con el error:
Error: duplicate key value violates unique constraint
.
Aparentemente, la identificación se definió como una secuencia:
Cada inserción fallida aumenta el puntero en la secuencia hasta que se incrementa a un valor que ya no existe y las consultas tienen éxito.
SELECT nextval('jos_content_id_seq'::regclass)
¿Qué hay de malo con la definición de la tabla? ¿Cuál es la forma inteligente de solucionar esto?