http://www.techonthenet.com/mysql/triggers/before_insert.php
http://www.mysqltutorial.org/create-the-first-trigger-in-mysql.aspx
http://www.w3resource.com/mysql/mysql-triggers.php
http://www.sitepoint.com/how-to-create-mysql-triggers/
Ejemplo de desencadenador:
CREATE TABLE `customer_log` (
`idcustomer_log` int(11) NOT NULL AUTO_INCREMENT,
`customer_id` int(11) DEFAULT NULL,
`user` varchar(45) DEFAULT NULL,
`fecha` datetime DEFAULT NULL,
`nombre` varchar(45) DEFAULT NULL,
`nombre_ant` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idcustomer_log`)
);
DELIMITER //
CREATE TRIGGER cliente_actualizado BEFORE UPDATE ON customer
FOR EACH ROW BEGIN
DECLARE vUser varchar(50);
-- Find username of person performing the INSERT into table
SELECT USER() INTO vUser;
-- Insert record into audit table
INSERT INTO customer_log
( customer_id,
fecha,
user,nombre,nombre_ant)
VALUES
( NEW.customer_id,
SYSDATE(),
vUser,NEW.first_name, OLD.first_name );
END;//
DELIMITER ;
CREATE TRIGGER `sakila`.`actor_BEFORE_DELETE` BEFORE DELETE ON `actor` FOR EACH ROW
BEGIN
if OLD.actor_id between 1 and 20 then
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'No puedes borrar';
else
insert into actor_log(first_name, last_name) values (OLD.first_name, OLD.last_name);
end if;
END
CREATE DEFINER=`root`@`localhost` TRIGGER `sakila`.`payment_BEFORE_INSERT` BEFORE INSERT ON `payment` FOR EACH ROW
BEGIN
if NEW.amount>=10 then
set NEW.amount=9.99;
end if;
END
CREATE DEFINER=`root`@`localhost` TRIGGER `sakila`.`payment_BEFORE_UPDATE` BEFORE UPDATE ON `payment` FOR EACH ROW
BEGIN
if NEW.amount > OLD.amount then
set NEW.amount=OLD.amount;
end if;
END