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 03-08-2004
Avatar de marrullas
marrullas marrullas is offline
Miembro
 
Registrado: abr 2004
Posts: 18
Poder: 0
marrullas Va por buen camino
problema con disparador FB

Buenas, saludos a la comunidad
mi problema es el siguiente:
tengo un disparador "antes de insertar" en una tabla que debe hacer,

*selecionar otra tabla un valor relacionado con una dato por medio de un codigo de la tabla en la cual estoy insertado datos.
*despues dedo actualizar un valor de la tabla que seleccione haciendo una resta
Código:
 CREATE TRIGGER TRIGGERCITO FOR TABLA1 ACTIVE
 BEFORE INSERT POSITION 10
 AS
 	 declare variable SALDO_ANTERIOR INTEGER;
 begin
 
 select TABLA2.SALDO from TABLA2 where TABLA2.CODIGO=new.CODIGO into :SALDO_ANTERIOR;
 
 update TABLA2 set SALDO =:SALDO-new.SALIDA where TABLA2.CODIGO=new.CODIGO;
 
 end
.

el problema es que la seleccion no me funciona con el dato new.CODIGO que pero si le pongo el dato explcitamente "001" si me funciona.
por aclarar me queda que he revisado y los datos existen. en un debuguer me sale new.CODIGO tiene el valor "001" pero no selecciona nada en cambio si pongo en ves de new.codigo el dato si me funciona.


de antemano les agradesco la ayuda que me puedan brindar

PD: antes lo he hecho y me ha funcionado
__________________
re-contra-newbie
Responder Con Cita
  #2  
Antiguo 03-08-2004
Carlos de Pablo Carlos de Pablo is offline
Registrado
 
Registrado: ago 2004
Posts: 4
Poder: 0
Carlos de Pablo Va por buen camino
Hola

Revise tu codigo y podrias corregir el error cambiando el BEFORE por AFTER para que una vez insertado el registro actualiza tambien la tabla relacionada.

CREATE TRIGGER TRIGGERCITO FOR TABLA1 ACTIVE
AFTER INSERT POSITION 0
AS
begin

update TABLA2 set SALDO = SALDO -new.SALIDA where TABLA2.CODIGO=new.CODIGO;

end
Responder Con Cita
  #3  
Antiguo 03-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por Carlos de Pablo
podrias corregir el error cambiando el BEFORE por AFTER
El código funcionaría exactamente igual en el before que en el after insert. Yo dejo regularmente las actualizaciones a otras tablas para el trigger after, para evitar trabajo innecesario en la BD en caso que el registro no cumpla con algún constraint o regla definida, pero eso es harina de otro costal.

Lo que se me ocurre es que pudieran haber varios triggers y el valor new.codigo se asigne después de la ejecución del que estamos tratando aqui.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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


La franja horaria es GMT +2. Ahora son las 15:10:13.


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