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)
-   -   Actualizacion de un campo desde un trigger (https://www.clubdelphi.com/foros/showthread.php?t=50283)

fedat 13-11-2007 23:17:15

Actualizacion de un campo desde un trigger
 
Hola amigos del foro!

Por favor quien me puede resolver la siguiente inquietud:

Desde un trigger necesito hacer un llamado a un procedimiento almacenado que me retorna un valor para actualizar un campo en la tabla que ejecuta el trigger.

El procedimiento almacenado lo tengo listo y me retorna el valor correcto, ese valor necesito insertarlo en un campo mediante un trigger after insert-update que llama al procedimiento almacenado que les comente.

Recibo comentarios al respecto, muchas gracias!!!

Lepe 14-11-2007 00:32:30

No lo entiendo :D

Y no creo que esté bien diseñado el asunto.

Se realiza una modificación en una tabla.
1 - se graba la modificación
2 - Salta el disparador after insert-update y éste provocará una actualización en la misma tabla
3 - Volvemos al paso 1 :D :D

Es lo que se llama recursión. Normalmente los trigger after sirven para modificar otras tablas.

Pero vamos..
Código SQL [-]
declare variable valor integer;
begin

execute procedure Miproc returnings_values(:valor);

update Mitabla set micampo = :valor;
end;

Yo intentaría hacerlo en el before insert-update:
[sql]
Código SQL [-]
delcare variable valor integer;
begin

execute procedure Miproc returnings_values(:valor);

new.campo = :valor;  
/* aquí actualizo el valor, como es un trigger "before" puedo sustituir el 
   futuro valor que tendrá, me ahorro el trigger after insert-update y además
   evito recursión.

   Si el Sp necesita un valor de un campo de este mismo registro, se lo puedes
   pasar como parámetro con old.Nombrecampo
*/
end;

fedat 14-11-2007 01:13:00

Solucionado
 
Amigos muchas gracias.

Verificando hilos anteriores encrontre la respuesta.

http://www.clubdelphi.com/foros/showthread.php?t=12337

Tenias razon era en un BEFORE.


La franja horaria es GMT +2. Ahora son las 05:31:03.

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