Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2008
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 526
Poder: 22
IVAND Va por buen camino
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
__________________
IVAND
Responder Con Cita
  #2  
Antiguo 22-07-2008
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Smile

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.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #3  
Antiguo 22-07-2008
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 526
Poder: 22
IVAND Va por buen camino
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
__________________
IVAND
Responder Con Cita
  #4  
Antiguo 23-07-2008
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Triggers y SP Cañones Firebird e Interbase 4 29-04-2007 02:27:50
triggers nenufer Conexión con bases de datos 3 16-05-2006 08:17:08
triggers edy_aca Firebird e Interbase 5 26-08-2004 00:09:53
...69 cosas... Jure Humor 0 08-07-2004 19:03:48
Cosas de la vida........ __cadetill Humor 6 27-02-2004 16:54:56


La franja horaria es GMT +2. Ahora son las 14:28:59.


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