Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Trigger Mutante

Estas en el tema de Trigger Mutante en el foro de Mysql en Foros del Web. Nose si llamarlo así pero paso a comentar lo que intento hacer. Código: DELIMITER // CREATE TRIGGER ActualizoTotalAnadeVenta AFTER UPDATE ON anade_venta FOR EACH ROW ...
  #1 (permalink)  
Antiguo 16/12/2015, 17:47
 
Fecha de Ingreso: septiembre-2011
Mensajes: 35
Antigüedad: 12 años, 7 meses
Puntos: 0
Trigger Mutante

Nose si llamarlo así pero paso a comentar lo que intento hacer.

Código:
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//
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.

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//

Última edición por MatiasFiermarin; 16/12/2015 a las 17:54

Etiquetas: select, tabla, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:58.