Bonjour,
je viens vers vous pour essayer de comprendre comment fonctionne la vérification de l'unicité dans postgresql (v 7.4.8) (et au final essayer de résoudre mon problème).

Pour simplifier, j'ai une table trace_object qui comporte 3 colonnes :
code_barre_id, SERIAL,PKEY
code_barre, varchar (15), UNIQUE
code_barre_crypte, varchar(15), UNIQUE

sachant que la colonne code_barre_crypte est dérivée de la colonne code_barre : code_barre_crypte = text2code128 (code_barre).
La fonction text2code128 est une fonction qui prend en entrée le code-barre lisible et renvoie en sortie le code-barre crypté.

Mon souci intervient pour 2 code-barres que je veux insérer dans ma table : AB28662097 et AB28662098. Les code-barres cryptés renvoyés par la fonction text2code128 sont respectivement ÌABÇ<b4ÅÃÎ et ÌABÇ<b4ÆÊÎ.
A priori, ils sont différents....mais pas pour postgesql qui me jette en me disant que la contrainte d'unicité de la colonne code_barre_crypte est violée ()
ERROR: duplicate key violates unique constraint "unique_barcode128"
La définition de l'index créé par postgresql est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
CREATE UNIQUE INDEX unique_barcode128 ON trace_object USING btree (code_barre_crypte)
Comment se fait-il que cette contrainte d'unicité soit violée alors que les données que je tente d'insérer sont différentes?
Si quelqu'un s'est déjà trouvé dans ce cas de figure....ou si vous avez des pistes...
merci d'avance.
Précisions : j'ai essayé de mon interface web, de phpPgAdmin, en ligne de commande, avec ou sans l'aide de la fonction text2code128 : l'erreur est toujours la même.
Autre précision : j'ai installé la routine text2code128 en tant que macro d'openoffice et j'ai imprimé les code-barres correspondant à AB28662097 et AB28662098. Je les ai scanné et ai bien retrouvé mes petits, cette fonction "fonctionne" donc à merveille.....