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)
-   -   Duda Sobre trigger (https://www.clubdelphi.com/foros/showthread.php?t=7000)

DANIELMW 29-01-2004 21:21:25

Duda Sobre trigger
 
Tengo una duda con respecto a los trigger, la pregunta es cuando sea hace una Update masivo entra una sola vez en los eventos After o Before Update?.
o muchas veces(una por cada registro modificado)??.

kinobi 29-01-2004 22:27:20

Lo segundo, el trigger se lanza una vez por cada fila afectada.

Saludos.

DANIELMW 29-01-2004 23:07:29

eso tenia entendido, pero.....
 
lo que no se es por que el siguiente trigger no me inserta un registro en otra tabla por cada vez que se ejecuta el disparador.

si hago un update de toda la tabla articulos me inserta Solo un registro en la tabla cambios de precio.

CREATE TRIGGER INSERTACAMBIODEPRECIO FOR ARTICULOS
ACTIVE AFTER UPDATE POSITION 0
As
DECLARE VARIABLE MAXIMOCODIGO Integer;
Begin

Select max(CodigoCambio) From CambiosDePrecio Into MAXIMOCODIGO;
MAXIMOCODIGO = MAXIMOCODIGO + 1;

Insert Into CambiosDePrecio Values (:MAXIMOCODIGO, NEW.CodigoArticulo, New.PrecioLista1,CAST('LISTA1' AS VARCHAR (15)),
New.FechaModificacion, 0);

End

PD: No soy participe de preguntar por codigo antes de buscarle la solucion, pero no le veo la vuelta :mad:

StartKill 29-01-2004 23:31:48

Hola, :cool:

Tomando la afirmacion de "kinobi" los trigger se disparan por cada registro antes y despues de una determinada accion (añadir, borrar, actualizar).

Revisando tu código lo veo bien....

Un consejo aunque de conejo :D

Este mismmo trigger modificalo de la siguente forma-para que puedas capturar el "supuesto error"

1.- no hagas ningun calculo, mas solamente un insert a la segunta tabla con un valor statico a un determinado campo

2.- si todo va bien modifica tu trigger con un calculo con el "select/max" y almacena el calculo en la segunda tabla.

3. si todo va bien....

Osea, trata de capturar/encontrar por que no hace lo que quieres, claro está que es una tarea tediosa-perooo, alli esta el trabajo, por eso somos "lindos" programadores :)


Debo suponer que ya sabias que hacer, te recuerdo que todos hacemos lo mismo (la mayoria 99.99%) ante estos supuestos errores ;)

Your friend

StartKill :cool:
Lima-Perú


La franja horaria es GMT +2. Ahora son las 04:13:26.

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