2010-12-15 8 views
1

Salut j'ai une question que je sais que cela a été posté plusieurs fois, mais je n'ai pas trouvé de réponse à mon problème. Le problème est que j'ai une table et une colonne "id" je veux que ce soit un nombre unique tout aussi normal. Ce type de colonne est en série et la valeur suivante après chaque insertion provient d'une séquence, donc tout semble bien se passer, mais cela montre parfois cette erreur. Je ne sais pas pourquoi? Dans la documentation il est écrit que la séquence est dupe prof et fonctionne toujours. Si j'ajoute une contrainte UNIQUE à cette colonne, cela sera-t-il utile? J'ai déjà travaillé plusieurs fois sur Postres mais cette erreur se présente pour la première fois. J'ai tout fait comme d'habitude et je n'ai jamais eu ce problème auparavant. Pouvez-vous m'aider à trouver la réponse qui pourra être utilisée à l'avenir pour toutes les tables qui seront créées? Disons que nous avons quelque chose de facile comme ceci:Postgresql duplicate clé viole contrainte unique

CREATE TABLE comments 
(
    id serial NOT NULL, 
    some_column text NOT NULL, 
    CONSTRAINT id_pkey PRIMARY KEY (id) 
) 
WITH (
    OIDS=FALSE 
); 
ALTER TABLE interesting.comments OWNER TO postgres; 

Si j'ajoute:

ALTER TABLE comments ADD CONSTRAINT id_id_key UNIQUE(id) 

Will si être enought ou est-il une autre chose qui devrait être fait?

+1

Afficher le code qui insère les données; avoir la clé primaire forcera déjà une contrainte unique, donc vous n'avez pas besoin d'ajouter cela. –

Répondre

2

La clé primaire vous protège déjà contre l'insertion de valeurs en double, comme vous le faites lorsque vous obtenez cette erreur. Ajouter une autre contrainte unique n'est pas nécessaire pour le faire. L'erreur "clé dupliquée" vous indique que le travail n'a pas été effectué car il produirait une clé en double, pas qu'il ait découvert une clé dupliquée déjà validée dans la table.

0

This article explains que votre séquence soit peut-être désynchronisée et que vous deviez la synchroniser manuellement.

Questions connexes