Ejemplo de un triggers: La “idea” es crear un trigger que antes de insertar un producto calcule el valor de venta. Supongamos la siguiente situación: En una empresa vende productos y se gana un porcentaje fijo por cada producto. &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Cree la siguiente BD: MariaDB [(none)]> Create database pruebadetrigger; Query OK, 1 row affected (0.06 sec) MariaDB [(none)]> use pruebadetrigger; Database changed rear la siguiente tabla MariaDB [pruebadetrigger]> Create table productos( codigo varchar(12) primary key, nombre varchar(30), porgana int(2), Costo int, Valorventa int, cantidad int ); Query OK, 0 rows affected (0.25 sec) MariaDB [pruebadetrigger]> select * from productos; Empty set (0.00 sec) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Insertando información: observe que enviamos el valorventa en cero(0) MariaDB [pruebadetrigger]> Insert into productos values('1','arroz 1 kilo',15,1800,0,45); Query OK, 1 row affected (0.05 sec) MariaDB [pruebadetrigger]> select * from productos; +--------+--------------+---------+-------+------------+----------+ | codigo | nombre | porgana | Costo | Valorventa | cantidad | +--------+--------------+---------+-------+------------+----------+ | 1 | arroz 1 kilo | 15 | 1800 | 0 | 45 | +--------+--------------+---------+-------+------------+----------+ 1 row in set (0.01 sec) efectivamen guardo en cero(0) aun no hemos creado nada que me calcule el valor venta(ningún procedimierno, función o trigger) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&66 -- creemos el trigger MariaDB [pruebadetrigger]> MariaDB [pruebadetrigger]> delimiter // create trigger calvalorventa before insert on productos for each row begin set new.valorventa = new.costo +new.costo*new.porgana/100; end // Delimiter ; MariaDB [pruebadetrigger]> ***************************************************************************************** MariaDB [pruebadetrigger]> delete from productos; Query OK, 1 row affected (0.04 sec) MariaDB [pruebadetrigger]> Insert into productos values('1','arroz 1kilo',15,1800,0,45); Query OK, 1 row affected (0.05 sec) MariaDB [pruebadetrigger]> select * from productos; +--------+-------------+---------+-------+------------+----------+ | codigo | nombre | porgana | Costo | Valorventa | cantidad | +--------+-------------+---------+-------+------------+----------+ | 1 | arroz 1kilo | 15 | 1800 | 2070 | 45 | +--------+-------------+---------+-------+------------+----------+ 1 row in set (0.00 sec) observamos lo que se guardo: ahora si calculo el valor de venta “automaticamente” &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& MariaDB [pruebadetrigger]> Update productos set costo=5000 where codigo='1'; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [pruebadetrigger]> select * from productos; +--------+-------------+---------+-------+------------+----------+ | codigo | nombre | porgana | Costo | Valorventa | cantidad | +--------+-------------+---------+-------+------------+----------+ | 1 | arroz 1kilo | 15 | 5000 | 2070 | 45 | +--------+-------------+---------+-------+------------+----------+ 1 row in set (0.00 sec) ************************************************************************************************ Ejemplo2: de un triggers: La “idea” es crear un trigger que antes de actualizar un producto vuelva y calcule el valor de venta. MariaDB [pruebadetrigger]> Delimiter // MariaDB [pruebadetrigger]> Create trigger actvalorventa before update on productos for each row begin set new.valorventa=new.costo + new.costo*old.Porgana/100; end // Query OK, 0 rows affected (0.08 sec) MariaDB [pruebadetrigger]> Delimiter ; MariaDB [pruebadetrigger]> delete from productos; Query OK, 1 row affected (0.02 sec) MariaDB [pruebadetrigger]> Insert into productos values('1','arroz 1kilo',15,1800,0,45); Query OK, 1 row affected (0.01 sec) MariaDB [pruebadetrigger]> Update productos set costo=5000 where codigo=’1’; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [pruebadetrigger]> select * from productos; +--------+-------------+---------+-------+------------+----------+ | codigo | nombre | porgana | Costo | Valorventa | cantidad | +--------+-------------+---------+-------+------------+----------+ | 1 | arroz 1kilo | 15 | 5000 | 5750 | 45 | +--------+-------------+---------+-------+------------+----------+ 1 row in set (0.00 sec)