- MySql no permite realizar cambios dentro de un código de activación en la misma tabla en la que tiene ese activador
- Puede superar esta limitación cambiando el valor de una columna de una fila que se inserta usando
BEFORE
evento en lugar deAFTER
. - Ahora, para abordar los valores de columna de una fila que se inserta en MySql, debe usar
NEW
palabra clave.
Dicho esto, tu gatillo debería verse como
CREATE TRIGGER tg_test1_insert
BEFORE INSERT ON test1
FOR EACH ROW
SET NEW.originindex =
(
SELECT value
FROM cities
WHERE city = NEW.origin
);
Aquí está SQLFiddle demostración