sql >> Database >  >> RDS >> Mysql

MYSQL:Bestaande primaire sleutel verkrijgen bij het invoegen van record met dubbele unieke sleutel?

Als je een UNIQUE . hebt index op een kolom, wat u ook probeert, de RDMS zal niet duplicaten toestaan ​​in die kolom (behalve voor de NULL waarde).

Zoals u al zei, is er een oplossing om "fout" te voorkomen als dit wordt toegevoegd. Waarschijnlijk INSERT IGNORE in jouw geval.

Hoe dan ook, INSERT en UPDATE de databank wijzigen. MySQL nooit retourneert waarden voor deze instructies. De enige manier om uw DB te lezen is door een SELECT . te gebruiken verklaring.

Hier is de "oplossing" eenvoudig, aangezien je een UNIQUE . hebt kolom:

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


  1. Bulk invoegen met SQLAlchemy ORM

  2. Zoeken in volledige tekst geeft altijd een lege resultatenset

  3. Opgegeven sleutel was te lang; maximale sleutellengte is 1000 bytes

  4. hoe het tijdstempelformaat in mysql te veranderen