2010-12-15 74 views
0

J'ai une clé unique sur quelques champs d'une table. Avec PHP, je reçois une belle erreur comme il se doit lorsque j'essaie d'insérer les mêmes données. Qu'est-ce que Im essayant d'archiver, c'est que MySQL me redonne la clé primaire du champ qui a généré l'erreur.MySQL restituant un identifiant unique en double, comment?

Donc quand j'insère quelque chose en double, est-ce qu'il y a un moyen pour que MySQL puisse rendre l'ID 'd'origine' sans sélectionner tous les champs que j'ai essayé d'insérer?

Tnx à l'avance

+0

De quoi avez-vous besoin? Un moyen d'identifier les clés uniques de la table? –

+1

Pas sans le demander directement, non. – DampeS8N

+0

Lorsque j'essaie d'insérer X dans la table Y quand X existe déjà, j'ai besoin de MySQL pour me redonner la clé primaire de X qui existe, sans avoir à faire un SELECT séparé sur X dans Y – Pokepoke

Répondre

0

MySQL ne peut pas le faire .. peut-être si vous faites procédure ou une fonction pour cela, il est posible mais vous shoud pense que vous devez vraiment cela?

2

Vous pouvez utiliser mysql_error() pour obtenir un message comme Duplicate entry '1' for key 'PRIMARY' que vous pouvez analyser pour déterminer la valeur de la clé dupliquée.

0

Si vous avez un champ AUTO_INCREMENT (id, ou quelque chose d'autre), vous pouvez utiliser ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id) avoir la valeur LAST_INSERT_ID renvoie la valeur de la colonne id lorsqu'une insertion « a échoué ». Il ne manquera cependant plus, ce qui est quelque chose à prendre en considération.