Tengo la siguiente consulta:MySQL ON DUPLICATE KEY - ¿la última identificación de inserción?
INSERT INTO table (a) VALUES (0)
ON DUPLICATE KEY UPDATE a=1
Quiero que el ID de cualquiera de la inserción o la actualización. Por lo general, ejecuto una segunda consulta para obtener esto, ya que creo que insert_id() solo devuelve el ID "insertado" y no el ID actualizado.
¿Hay alguna manera de INSERTAR/ACTUALIZAR y recuperar el ID de la fila sin ejecutar dos consultas?
En lugar de suponer, ¿por qué no lo prueba usted mismo? El SQL en la edición anterior funciona, y mediante mis pruebas es más rápido que detectar un error de inserción, usando INSERT IGNORE, o seleccionando para ver si hay un duplicado primero. –
ADVERTENCIA: la solución propuesta funciona, pero el valor de auto_increment continúa incrementándose, incluso si no hay ninguna inserción. Si la clave duplicada ocurre con frecuencia, es posible que desee ejecutar 'alter table tablename AUTO_INCREMENT = 0;' después de la consulta anterior, para evitar grandes diferencias en los valores de su id. –