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

insertar en actualización de clave duplicada

Creo que la respuesta a esto se aborda en MySQL documentos :

Si una tabla contiene un AUTO_INCREMENT columna y INSERT ... UPDATE inserta una fila, el LAST_INSERT_ID() la función devuelve el AUTO_INCREMENT valor. Si la declaración actualiza una fila en su lugar, LAST_INSERT_ID() no es significativo. Sin embargo, puede solucionar esto usando LAST_INSERT_ID(expr) . Supongamos que id es el AUTO_INCREMENT columna. Para hacer LAST_INSERT_ID() significativo para las actualizaciones, inserte filas de la siguiente manera:

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