Ver Mensaje Individual
  #1  
Antiguo 25-03-2014
mantraxer21 mantraxer21 is offline
Miembro
 
Registrado: ago 2010
Posts: 94
Reputación: 14
mantraxer21 Va por buen camino
Trigger de calculo Stock Firebird

Estiamdos :

Tengo el siguiente Trigger en Firebird 2.5.

Código SQL [-]
SET TERM ^ ;



CREATE OR ALTER TRIGGER STOCK_MATERIALES FOR PRESTAMOS
ACTIVE AFTER INSERT POSITION 0
AS
begin
  /* Trigger text */

  update libros set libros.cantidad_lib = -1 *(select sum(prestamos.cantidad_material1)
  from prestamos where prestamos.id_material1 = new.id_material1)
  where libros.idlibro = new.id_material1;
end
^


SET TERM ; ^

Los campos de la tabla Libros son:

Código SQL [-]
    IDLIBRO          INTEGER NOT NULL,
    IDAUTOR          INTEGER,
    ISBN_LIB         VARCHAR(25),
    TITULO_LIB       VARCHAR(50),
    IDTEMATICA       INTEGER,
    CANTIDAD_LIB     INTEGER,
    CANTIDAD_MINIMA  INTEGER,
    ANIO_LIB         VARCHAR(4),
    REGISTRO_LIB     DATE DEFAULT 'NOW',
    IDIOMA_LIB       INTEGER,
    IDUBICACION      INTEGER,
    PAGINAS          INTEGER

Campos de la tabla préstamos son:

Código SQL [-]
    IDPRESTAMO          INTEGER NOT NULL,
    ID_ALUMNO           INTEGER,
    ID_DOCENTE          INTEGER,
    FECHA_PRESTAMO      DATE,
    ID_MATERIAL1        INTEGER, // libro o material 1
    ID_MATERIAL2        INTEGER, // libro o material 2
    ID_MATERIAL3        INTEGER, // libro o material 3
    FECHA_DEVOLUCION1   DATE,
    FECHA_DEVOLUCION2   DATE,
    FECHA_DEVOLUCION3   DATE,
    CANTIDAD_MATERIAL1  INTEGER, // unidades a solicitar de material 1
    CANTIDAD_MATERIAL2  INTEGER, // unidades a solicitar de material 2
    CANTIDAD_MATERIAL3  INTEGER // unidades a solicitar de material 3

Pero por ejemplo en el campo "CANTIDAD_LIB" de la tabla libros tengo asignado un stock de prueba "200", pero al momento de hacer INSERT sobre la Tabla préstamos, me muestra "-120" registros en el campo "CANTIDAD_LIB" de la tabla Libros.

Alguien una ayuda?
Responder Con Cita