Código:
En el anterior código intento crear un trigger que se ejecuta cada vez que se lleve un UPDATE de la tabla anade_venta para re calcular el precio de la misma. Como es obvio esto generaria un bucle sin fin por tal motivo al intentar hacer un update no me deja. Intente poniendo el IF que ven pero tampoco me ayudo.DELIMITER // CREATE TRIGGER ActualizoTotalAnadeVenta AFTER UPDATE ON anade_venta FOR EACH ROW BEGIN IF NEW.ANADE_VENTA_CANTIDADPRODUCTO = OLD.ANADE_VENTA_CANTIDADPRODUCTO THEN UPDATE anade_venta SET ANADE_VENTA_TOTAL = (ANADE_VENTA_CANTIDADPRODUCTO * (SELECT a1.PRODUCTO_PRECIO FROM producto a1, lote_producto a2 WHERE a2.LOTE_PRODUCTO_ID = OLD.LOTE_PRODUCTO_ID AND a2.PRODUCTO_ID = a1.PRODUCTO_ID)); END IF; END//
Lo que intento hacer es posible y si es así como lo puedo hacer?
Muchas gracias.
Saludos
EDIT:
Buscando en el fondo del agujero del conejo encontré la solución y es algo sencillo la verdad, publico la solución por si a alguien mas le pasa.
Debe de usar el clasico UPDATE vale poner el set NEW.columna = SENTENCIA.
Código:
DELIMITER // CREATE TRIGGER ActualizoTotalAnadeVenta BEFORE UPDATE ON anade_venta FOR EACH ROW BEGIN IF NEW.ANADE_VENTA_CANTIDADPRODUCTO != OLD.ANADE_VENTA_CANTIDADPRODUCTO THEN SET NEW.ANADE_VENTA_TOTAL = (NEW.ANADE_VENTA_CANTIDADPRODUCTO * (SELECT a1.PRODUCTO_PRECIO FROM producto a1, lote_producto a2 WHERE a2.LOTE_PRODUCTO_ID = OLD.LOTE_PRODUCTO_ID AND a2.PRODUCTO_ID = a1.PRODUCTO_ID)); END IF; END//