Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Einfügen bei doppelter Schlüsselaktualisierung

Ich glaube, die Antwort darauf findet sich in MySQL Dokumente :

Wenn eine Tabelle einen AUTO_INCREMENT enthält Spalte und INSERT ... UPDATE fügt eine Zeile ein, die LAST_INSERT_ID() Funktion gibt den AUTO_INCREMENT zurück Wert. Wenn die Anweisung stattdessen eine Zeile aktualisiert, LAST_INSERT_ID() ist nicht aussagekräftig. Sie können dies jedoch umgehen, indem Sie LAST_INSERT_ID(expr) verwenden . Angenommen, diese ID ist AUTO_INCREMENT Säule. Um LAST_INSERT_ID() zu erstellen Sinnvoll für Updates, Zeilen wie folgt einfügen:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;