Ver Mensaje Individual
  #2  
Antiguo 10-03-2008
mamaro mamaro is offline
Miembro
 
Registrado: mar 2004
Posts: 79
Reputación: 21
mamaro Va por buen camino
Hola

Yo normalmente utilizo Firebird, y en estos casos incluyo un disparador en la tabla Entradas, como te lo detallo:

Tabla Articulo:
Ident integer (clave primaria)
Nombre varchar(30)
Existencia integer

Tabla Entrada:
ident integer (clave primaria)
Fecha timestamp
Articulo integer (clave foránea a tabla Articulo)
Cantidad integer

Agrego el siguiente disparador para ésta última tabla en el evento AFTERINSERT:
Código SQL [-]
begin
  update ARTICULO
  set existencia=existencia+new.cantidad;
end

.. y si se permiten modificar las entradas se puede crear éste disparador en el evento AFTERUPDATE:
Código SQL [-]
begin
  update ARTICULO
  set existencia=existencia+(new.cantidad-old.cantidad);
end

.. y si se permite eliminar entradas, en el evento BEFOREDELETE:
Código SQL [-]
begin
  update ARTICULO
  set existencia=existencia-old.cantidad;
end

Yo normalmente pongo en la base de datos todo aquel código que representa una "regla del negocio" (eso que nunca cambia y que probablemente lo voy a utilizar desde varios lugares).

Bueno saludos y espero te sirva.
Responder Con Cita