2011-02-16 25 views
7

Ésta es mi consulta:¿Cómo obtener la fila de identificación de la fila actualizada?

INSERT INTO table (value) VALUES (value) ON DUPLICATE KEY UPDATE value=value 

Con mysql_insert_id() me sale el nuevo ID insertado, pero la forma de obtener el ID de la fila actualizada?

me trataron mysql_insert_id() pero, por fila actualizada, me sale 0.

+0

i no creo que es posible en MySQL –

+0

El deseo de ver lo que las respuestas se publican. He tenido el mismo problema en el pasado. Siempre seleccioné después. – David

Respuesta

0

No hay manera de hacer eso. Puedes hacer SELECCIONE la ID DE la tabla DONDE valor = valor;

0

Bien, como ya tiene una declaración WHERE, puede seleccionarla con una consulta diferente. mysql_insert_id() hace exactamente lo que dice. Obtenga una ID de un INSERT.

+0

Con mysql_insert_id() obtengo 0 (en la fila actualizada)! – Leonardo

+0

Sí, porque una actualización no es una inserción. Entonces obtienes 0 de vuelta. – gnur

0

Comenzando con MySQL 5.1.12, it's possible. La función last_insert_id de MySQL devolverá el valor del campo de autoincrement para las operaciones de inserción y actualización.

2

MySQL ON DUPLICATE KEY - last insert id?

"Marque esta página impresa: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html En la parte inferior de la página explican cómo se puede hacer LAST_INSERT_ID significativo para actualizaciones pasando una expresión a esa función de MySQL".

+0

Ok, pero necesito obtener la última ID actualizada en PHP. – Leonardo

+0

Última actualización ID de la fila actualizada en la consulta "ON DUPLICATE KEY update ..." – Leonardo

+1

@Leonardo El último ejemplo en esa página muestra cómo hacerlo – nos

0

Obtendrá la id de inserción con la función mysql_insert_id() php.

Sin embargo, cuando se combina con ON DUPLICATE KEY UPDATE, tendrá que hacer un poco más si desea que mysql_insert_id() le proporcione la clave que se actualizó, en lugar de la nueva clave que se insertó.

Cambiar la SQL para

INSERT INTO table (value) VALUES (value) 
     ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id),value=value; 

Ver más información here

Cuestiones relacionadas