sql >> Base de Datos >  >> RDS >> Mysql

MYSQL:¿Obtener la clave principal existente al insertar un registro con una clave única duplicada?

Si tienes un UNIQUE índice en una columna, sin importar lo que haya intentado, el RDMS no permitir duplicados en esa columna (excepto NULL valor).

Como dijiste, hay una solución para evitar el "error" si esto se agrega. Probablemente INSERT IGNORE en tu caso.

De todos modos, INSERT y UPDATE modificar la base de datos. MySQL nunca valores devueltos para estas declaraciones. La única forma de leer su base de datos es usar un SELECT declaración.

Aquí la "solución alternativa" es simple, ya que tiene un UNIQUE columna:

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