Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous,
J'essai de faire un INSERT sur une table qui contient une clé primaire sur la colonne COL1
Après avoir totalement vidé la table, je fais un INSERT et il me retourne
ERROR: duplicate key violates unique constraint "col_pkey"
État SQL :23505
Y'aurait il une purge a effectué ou quelque chose du genre?
Merci beaucoup!!
Ps : Avant cette table ne comportait pas de clé primaire et c'est depuis l'ajout de celle-ci que j'ai cette erreur (la table est vidée est remplie tout les jours)
Hors ligne
À priori, votre table n'est pas vidé. Comment avez-vous essayé de vider la table ?
Guillaume.
Hors ligne
Bonjour gleu et merci de vous intéresser à mon problème!
J'ai fait un DELETE FROM COL1;
Suivi d'un SELECT * from COL1 qui ne me renvoi aucun résultat!!
Dernière modification par LoganEcholls (10/06/2010 09:28:09)
Hors ligne
Tu as commité la transaction? (celle qui a fait la suppression)
Dernière modification par flo (10/06/2010 10:32:57)
Hors ligne
On m'a parlé de ça! Je pensait que c'était automatique sur postgres!
Alors j'ai testé ceci, mais peut être que j'utilise mal le COMMIT :
DELETE FROM COL1;
COMMIT;
et ensuite quand je fais le INSERT j'ai toujours le DUPLICATE KEY
Dernière modification par LoganEcholls (10/06/2010 11:05:45)
Hors ligne
Au fait, col1 est le nom de la table, ou de la colonne ?
Dans le premier message, il est question d'une colonne, et pourtant l'ordre SQL écrit sur ce forum est
DELETE from col1
et non
DELETE from nomTable
Or si c'est le nom de la colonne il devrait y avoir un message d'erreur...
Hors ligne
Il serait certainement plus simple de montrer un script complet: la création de la table avec la clé primaire, l'ajout des lignes, leur suppression, puis l'ajout de lignes qui doit échouer d'après ce que vous dites.
Pour infos, le COMMIT avec PostgreSQL n'est implicite que si vous n'avez pas utiliser explicitement BEGIN.
Guillaume.
Hors ligne
Bonjour tout le monde et merci pour votre aide!
Effectivement je me suis mal exprimé, au début COL1 représentait ma colonne mais dans la suppression c'était effectivement ma table!
Au final je n'ai jamais résolu ce problème, j'ai donc supprimer la table et recrée, ça n'a pas fonctionnait non plus, j'avais toujours des DUPLICATE KEY (sur une table vide qui venait d'être recrée!!!!!)
Du coup j'ai supprimé la clé primaire et maintenant tout va bien!!
Hors ligne
En fait, ce qu'il nous manque réellement, c'est un scénario pour le reproduire ? à mon avis, le problème ne vient pas de PostgreSQL mais, au cas où ce serait le cas, je n'ai pas suffisamment d'informations pour remonter le problème aux développeurs.
Guillaume.
Hors ligne
Supprimer une clé primaire est une très mauvaise idée. Mieux vaudrait essayer de comprendre ce qui n'a pas fonctionné dans ce que vous avez fait.
Mais sans la suite complète et précise des opérations que vous avez effectuées il est difficile de vous aider.
Hors ligne
Bonjour tout le monde.
Oui il parait que c'est une mauvaise idée de supprimer la clé primaire mais dans le cas de cette table je ne lui vois pas d'utilité!
Merci a tous pour vos réponses et désolé de ne pas avoir pu vous donner plus d'informations dans le descriptif de mon problème
Hors ligne
Si vous ne voyez pas l'utilité d'une clé primaire, c'est que ce n'est pas une vraie clé primaire.
La clé primaire est ce qui permet d'identifier de façon unique une donnée (je ne parle pas de clé primaire technique, mais d'une ou plusieurs colonnes de la table permettant de reconnaître un enregistrement). C'est la base de toute conception relationnelle. Sans clé primaire (et déclaration de celle-ci dans la base), la seule garantie que vous avez, c'est que la base sera corrompue. Et cela pourrait venir très vite.
Ou alors ce que vous essayez de stocker dans la base n'est pas de la donnée relationnelle. Mais vu le peu d'information qu'il y a dans ce thread à ce sujet, il est impossible d'en juger.
Marc.
Hors ligne
Pages : 1