Mysql
 sql >> Base de données >  >> RDS >> Mysql

MYSQL :Obtenir la clé primaire existante lors de l'insertion d'un enregistrement avec une clé unique en double ?

Si vous avez un UNIQUE index sur une colonne, peu importe ce que vous avez essayé, le RDMS ne le fera pas autoriser les doublons dans cette colonne (sauf pour le NULL valeur).

Comme vous l'avez dit, il existe une solution pour éviter les "erreurs" si cela s'ajoute. Probablement INSERT IGNORE dans votre cas.

Quoi qu'il en soit, INSERT et UPDATE modifier la base de données. MySQL jamais valeurs de retour pour ces instructions. La seule façon de lire votre DB est d'utiliser un SELECT déclaration.

Ici, la "solution de contournement" est simple, puisque vous avez un UNIQUE colonne :

INSERT IGNORE INTO tbl (pk, sha_key) VALUES ( ... ), ( ... );
SELECT pk, sha_key FROM tbl WHERE sha_key IN ( ... );
--                                             ^^^
--             Here the list of the sha1 keys you *tried* to insert