Ver Mensaje Individual
  #10 (permalink)  
Antiguo 03/02/2015, 08:59
Begotten
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Problema con triggers

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No puedes. Sólo podrás ver si hay un datos entrantes válidos en el UPDATE que haces...
Pero creo que si piensas un momento lo que tu mismo dices, verás la respuesta: Si tienes un campo que sólo cargas cuando haces el borrado lógico (así se denomina), entonces ese campo será NULL en todos los UPDATE excepto en ese caso...
Me parece que con sólo razonarlo ya puedes ver cuál es la condición a cumplir. ¿no?
No se si en este caso el valor cero se considera NULL pero se podría poner una condición para el nuevo valor de "estado" (si es uno hace las operaciones de actualización y si es cero hace las operaciones del borrado lógico) pero de nuevo tengo problemas con la sintaxis, ¿Podrías ayudarme?
Código MySQL:
Ver original
  1. if NEW.estado == 1 THEN BEGIN //actualizacion
  2. UPDATE obra SET `egresos_t`= obra.egresos_t + (NEW.egresos - OLD.egresos), `ingresos_t` = obra.ingresos_t + (NEW.ingresos - OLD.ingresos), `recepcion_t`= obra.recepcion_t +  (NEW.recepcion - OLD.recepcion) , `combustible_recepcion_t`= obra.combustible_recepcion_t + (NEW.combustible_recepcion - OLD.combustible_recepcion), `combustible_emision_t` = obra.combustible_emision_t + (NEW.combustible_emision - OLD.combustible_emision) WHERE obra.codigo = OLD.cod_obra;
  3. if NEW.estado == 0 THEN BEGIN //borrado logico
  4. UPDATE obra SET `egresos_t`= obra.egresos_t - OLD.egresos, `ingresos_t` = obra.ingresos_t - OLD.ingresos, `recepcion_t`= obra.recepcion_t - OLD.recepcion, `combustible_recepcion_t`= obra.combustible_recepcion_t - OLD.combustible_recepcion, `combustible_emision_t` = obra.combustible_emision_t - OLD.combustible_emision WHERE obra.codigo = OLD.cod_obra;
  5. WHERE obra.codigo = NEW.cod_obra

Última edición por gnzsoloyo; 03/02/2015 a las 09:13