Mysql
 sql >> Database >  >> RDS >> Mysql

inserire su aggiornamento chiave duplicata

Credo che la risposta a questa domanda sia affrontata in MySQL documenti :

Se una tabella contiene un AUTO_INCREMENT colonna e INSERT ... UPDATE inserisce una riga, il LAST_INSERT_ID() la funzione restituisce il AUTO_INCREMENT valore. Se invece l'istruzione aggiorna una riga, LAST_INSERT_ID() non è significativo. Tuttavia, puoi aggirare il problema utilizzando LAST_INSERT_ID(expr) . Supponiamo che id sia il AUTO_INCREMENT colonna. Per creare LAST_INSERT_ID() significativo per gli aggiornamenti, inserire le righe come segue:

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