Resulta que quiero meter un nuevo registro si es nuevo, pero si existe, pues quiero que actualice el existente. He estado leyendo y parece uqe la consulta sería la siguiente:
Código:
Supongamos que c0 es la primary key, y es un autoincremental.INSERT INTO t (c1,c2,c3) VALUES('v1','v2',v3) ON DUPLICATE KEY UPDATE c2='v2';
Pues bien, hasta ahi todo parece correcto, El problema viene cuando intento recuperar el id del ultimo registro tocado desde PHP con mysqli_insert_id(), tanto si se ha insertado nuevo, como si se ha actualizado alguno.
Tal cual está la consulta me devuelve 0. Deduzco que es por que lo último que se hace es comprobar el update, y tanto si se inserta alguno como si se actualiza es 0.
Leyendo por ahi, parece que habría que añadir el id a la clausula Update para que lo actualizace con el valor de la funcion mysql LAST_INSERT_ID
Código:
Pero no me devuelve el id del ultimo registro tocado, sino el siguiente (que no existe. Ademas si hago otra insercion diferente a futuro, el siguiente ID autoincremental que me mete no es el siguiente de la tabla, sino otro que depende del numero de veces uqe se haya ejecutado la clausura On DUPLICATE KEY UPDATE.INSERT INTO t (c1,c2,c3) VALUES('v1','v2',v3) ON DUPLICATE KEY UPDATE c0=LAST_INSERT_ID(c0), c1='v2';
¿Alguien sabe por qeu psa esto? ¿Como puedo solucionar mi problema de conseguir el ID del último registro tocado?