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
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?