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 29-01-2004
DANIELMW DANIELMW is offline
Registrado
 
Registrado: ene 2004
Posts: 6
Poder: 0
DANIELMW Va por buen camino
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)??.
Responder Con Cita
  #2  
Antiguo 29-01-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Lo segundo, el trigger se lanza una vez por cada fila afectada.

Saludos.
Responder Con Cita
  #3  
Antiguo 29-01-2004
DANIELMW DANIELMW is offline
Registrado
 
Registrado: ene 2004
Posts: 6
Poder: 0
DANIELMW Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 29-01-2004
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Cool

Hola,

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

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
Lima-Perú
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 09:06:24.


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