TRIGGERS EN MYSQL: QUÉ SON Y CÓMO CREARLOS
En MYSQL también se permite el manejo de TRIGGERS ("disparador") como en ORACLE y la verdad es que resulta bastante sencillo. Su código no es nada complejo si se tienen nociones de programación, y es bastante intuitivo.Los triggers se pueden asociar a las transacciones:
- INSERT
- UPDATE
- DELETE
DELIMITER $$
CREATE TRIGGER nombre_trigger BEFORE INSERT ON tabla1
FOR EACH ROW BEGIN
INSERT INTO tabla2 SET campo_tabla2 = NEW.campo_tabla1;
DELETE FROM tabla3 WHERE campo_tabla3 = NEW.campo_tabla1;
UPDATE tabla4 SET campo_tabla4 = campo_tabla4 + 1
WHERE campo_tabla4 = NEW.campo_tabla1;
END $$
DELIMITER ;
Este trigger se ejecutará antes de insertar los valores pasados en el INSERT y realiza varias operaciones bastante sencillas.
También se puede elegir cuando hacer que se ejecute el trigger, si antes de la transacción poniendo BEFORE, o después poniendo AFTER. En el ejemplo que he puesto el trigger se ejecutará antes de la inserción de datos en la tabla.
En el ejemplo que he puesto antes se puede apreciar que aparece la palabra NEW que se refiere al nuevo valor del campo después de la transacción que hace que el trigger se ejecute, si se quiere hacer referencia al valor antiguo es tan sencillo como usar la palabra OLD que asumirá el valor que estaba antes de realizar la transacción.
Los INSERT permiten NEW, los delete sólo old y los UPDATE ambas. Ésto es algo bastante importante y a tener en cuenta.