Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Varios cosas dentro de un triggers (https://www.clubdelphi.com/foros/showthread.php?t=58512)

IVAND 22-07-2008 21:16:14

Varios cosas dentro de un triggers
 
Hola a todos

Como siempre esperando sus sabios consejos, veran mi duda es la siguiente .

Utilizo firebird 1.5 y desde un disparador quisiera saber si puedo ejecutar dependiendo de una par de opciones o condiciones 2 update diferentes pero como lo hago no me deja la base es posible esto

Código SQL [-]
CREATE trigger producto_au0 for producto
active after update position 0
AS
begin
 if (producto.saldo_fac is null) then
  Begin
   update producto p set p.saldo_fac=0 where p.key_producto=old.key_producto;
   update producto p set p.can_temp=0 where p.key_producto=old.key_producto;
  End
 if (producto.saldo_fac<0) then
  Begin
   update producto p set p.operativo='N' where p.key_producto=old.key_producto;
  End
  /* Trigger text */
end

Gracias de antemano por sus comentarios
:)

RolphyReyes 22-07-2008 22:26:14

Saludos.

Podrías evitarte ese código si pones por defecto el valor de esas columnas a Cero y en el caso del campo operativo a N.

Pero puedes probar a utilizar New.Campo en vez de P.Campo.

IVAND 22-07-2008 23:17:31

Gracias por tu interes , los pongo asi es porque en un momento que no se cual esa columna se pone null y el dato no se suma

celades1 23-07-2008 06:25:42

hola

Código SQL [-]
if (producto.saldo_fac is null)
 
if (producto.saldo_fac<0)

Debes poner if (new.saldo_fac is null)
if (new.saldo_fac<0)

De todas maneras yolo haria en el trigger BU

Código SQL [-]
if (new.saldo_fac is null) then begin
new.saldo_fac=0;
new.can_temp=0;
end else if (new.saldo_fac<0) then
new.operativo='N' ;

Los triggers BU I BI Permiten cambiar el valor de los campos sin ningun problema y evitas hacer updates lo que a veces provoca recursividad ya que disparan otra vez el trigger

No se si lo explicado se adapta a lo que tu necesitas

Saludos


La franja horaria es GMT +2. Ahora son las 13:28:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi