2011-06-27 16 views
12

Tengo entendido que cuando llama a last_insert_id() va por conexiones, por lo que obtendrá el id de la última fila insertada en la misma conexión donde se llama a last_insert_id(), a la derecha ?mysql recibiendo last_insert_id() en un desencadenante

¿Qué ocurre si llamo last_insert_id() en un desencadenante 'DESPUÉS DE INSERTAR'?

Lo que quiero hacer es básicamente esto

DELIMITER $$ 
CREATE TRIGGER sometrigger 
AFTER INSERT ON sometable 
BEGIN 
    INSERT INTO anothertable (id, lastup) VALUES (last_insert_id(), NOW()); 
END $$ 

Es muy importante que el id en 'anothertable' es el mismo que en 'alguna_tabla' Que este trabajo o debería crear un procedimiento almacenado en cambio que se inserta en ambas tablas?

¿O posiblemente hay algo, en el desencadenador, para obtener los valores de la instrucción de inserción que provocó que se disparara el desencadenador? No he encontrado nada sobre eso.

Respuesta

17

Usted debe ser capaz de utilizar NEW.{id column name} para referirse a la última Identificación del inserto (así por ejemplo, si la columna NEW.id incremento automático se llama id.)

+0

Esto parece estar funcionando. Esa NUEVA palabra clave era exactamente el tipo de cosa que estaba buscando. Gracias. –

Cuestiones relacionadas