Un disparador o trigger es un código procedimental en SQL que automáticamente es invocado por el sistema gestor al presentarse un evento determinado para la manipulacion de datos...
Características:
- Se invoca antes o después de que un renglón/tupla de datos se ha insertado, actualizado o eliminado
- Esta asociado a una tabla
- Cada tabla puede tener uno o mas disparadores
- Se puede utilizar para actualizar valores de una tabla, insertar registros o llamar a otros procedimientos...
- Un disparador nunca se llama directamente, el disparador se ejecuta cuando el usuario intenta insertar, eliminar o modificar una fila en una tabla
Los disparadores tienen dos palabras clave, OLD y NEW que se refieren a los valores que tienen las columnas antes y después de la modificación. Los INSERT permiten NEW, los DELETE sólo OLD y los UPDATE permiten ambas.
Y bueno aquí miau les dejo unos ejemplos de triggers...
(Debiendo ustedes crear la base de datos con los campos necesarios para que funcione)
- Descripción del trigger: Al borrar un fabricante de la tabla fabricantes le cambie el id=5 a la tabla articulo si este se ve afectado.
DELIMITER//
CREATE TRIGGER delFabric AFTER DELETE ON fabricante FOR EACH ROW
BEGIN
UPDATE articulo SET fabricante=5;
WHERE fabricante OLD.codigo;
END
//
DELIMITER ;
NOTA: el delimiter "//" cambia dependiendo el entorno en donde crees tu base de datos en Query browser se utiliza el "//" y en Workbench se utiliza solo " | ". Siempre hay que delimitar el trigger porque si no el dbms no sabrá donde termina dicha instrucción
- Cuando se agregue un artículo nuevo si es del fabricante 5 que precio sea 10% mas el nuevo valor capturado.
-Sintaxis-
DELIMITER //
CREATE TRIGGER insertArt BEFORE INSERT ON articulo FOR EACH ROW
BEGIN
IF(fabricante=5)
THEN SET NEW.precio=NEW.precio*1.10;
END IF ;
END ;
//
DELIMITER ;
- Trigger que no permite cambiar el precio si es 0 y deja el precio anterior.
-Sintaxis-
DELIMITER |
CREATE TRIGGER precio BEFORE UPDATE ON articulo FOR EACH ROW
BEGIN
IF(NEW.precio=0)
THEN SET NEW.precio=OLD.precio;
ELSE SET NEW.precio=NEW.precio;
END IF ;
END
|
DELIMITER ;
- Trigger que aumenta el precio de un producto cuando este es modificado y le sube el 10% solo si este es menor a 1000
DELIMITER |
CREATE TRIGGER iva BEFORE UPDATE ON arituculo FOR EACH ROW
BEGIN
IF(NEW.precio<1000)
THEN SET NEW.precio=NEW.precio*1.10;
ELSE SET NEW.precio=NEW.precio;
END IF ;
END
|
DELIMITER ;
No hay comentarios.:
Publicar un comentario