Gabichu
30-09-2008, 17:39:45
hola a todos...
tengo el siguiente procedimiento AGREGAR_PENDIENTE , realmente no estoy segura de que tenga la estructura correcta, se ejecuta sin problemas desde un trigger, la cuestion es que se ejecuta la linea del insert sin importar si se cumple o no la condicion del if
CREATE PROCEDURE AGREGAR_PENDIENTE (
COD_PRESUP INTEGER)
AS
DECLARE VARIABLE CODCLIENTE INTEGER;
DECLARE VARIABLE FECHA DATE;
DECLARE VARIABLE CLIENTE VARCHAR(150);
DECLARE VARIABLE CODPRESUP INTEGER;
DECLARE VARIABLE CANTIDAD INTEGER;
begin
/*Insertar fecha, cod_cliente, cliente, cod_presupuesto */
select count(pendientes.cod_presup) from pendientes where pendientes.cod_presup=:codpresup into :cantidad;
if (:cantidad=0) then
begin
for
select presupuestos.cod_presup, presupuestos.cod_cliente,clientes.nombre||' '||clientes.apellido AS CLIENTE,fecha
from presupuestos, CLIENTES
where presupuestos.cod_presup=:cod_presup AND PRESUPUESTOS.cod_cliente=CLIENTES.cod_cliente into :CODpresup, :codcliente, :cliente,:fecha
do
begin
insert into pendientes(cod_cliente,FECHA_AT,cliente,cod_presup) values(:codcliente,:fecha, :cliente,:codpresup);
end
end
end
cualquier sugerencia es bienvenida...
este es el trigger
CREATE TRIGGER AU_PRESUPUESTO FOR PRESUPUESTOS
ACTIVE AFTER UPDATE POSITION 0
AS
begin
if (old.deposito='SI') then
execute procedure AGREGAR_PENDIENTE(old.cod_presup);
end
La idea es que si en la tabla PRESUPUESTOS el campo deposito (que puede tener dos valores, 'SI' y 'NO') cambia de NO a SI entonces se debe insertar un nuevo campo en la tabla PENDIENTES, el problema es que por cada vez que modifico la tabla de PRESUPUESTOS se inserta un nuevo registro en la tabla PENDIENTES, por lo tanto si modifico cualquier campo de la tabla presupuestos 10 veces, voy a tener 10 nuevos registros en PENDIENTES..
Espero no haberlos mareado, por favor ayudenme a resolver esto!!!
gracias...
tengo el siguiente procedimiento AGREGAR_PENDIENTE , realmente no estoy segura de que tenga la estructura correcta, se ejecuta sin problemas desde un trigger, la cuestion es que se ejecuta la linea del insert sin importar si se cumple o no la condicion del if
CREATE PROCEDURE AGREGAR_PENDIENTE (
COD_PRESUP INTEGER)
AS
DECLARE VARIABLE CODCLIENTE INTEGER;
DECLARE VARIABLE FECHA DATE;
DECLARE VARIABLE CLIENTE VARCHAR(150);
DECLARE VARIABLE CODPRESUP INTEGER;
DECLARE VARIABLE CANTIDAD INTEGER;
begin
/*Insertar fecha, cod_cliente, cliente, cod_presupuesto */
select count(pendientes.cod_presup) from pendientes where pendientes.cod_presup=:codpresup into :cantidad;
if (:cantidad=0) then
begin
for
select presupuestos.cod_presup, presupuestos.cod_cliente,clientes.nombre||' '||clientes.apellido AS CLIENTE,fecha
from presupuestos, CLIENTES
where presupuestos.cod_presup=:cod_presup AND PRESUPUESTOS.cod_cliente=CLIENTES.cod_cliente into :CODpresup, :codcliente, :cliente,:fecha
do
begin
insert into pendientes(cod_cliente,FECHA_AT,cliente,cod_presup) values(:codcliente,:fecha, :cliente,:codpresup);
end
end
end
cualquier sugerencia es bienvenida...
este es el trigger
CREATE TRIGGER AU_PRESUPUESTO FOR PRESUPUESTOS
ACTIVE AFTER UPDATE POSITION 0
AS
begin
if (old.deposito='SI') then
execute procedure AGREGAR_PENDIENTE(old.cod_presup);
end
La idea es que si en la tabla PRESUPUESTOS el campo deposito (que puede tener dos valores, 'SI' y 'NO') cambia de NO a SI entonces se debe insertar un nuevo campo en la tabla PENDIENTES, el problema es que por cada vez que modifico la tabla de PRESUPUESTOS se inserta un nuevo registro en la tabla PENDIENTES, por lo tanto si modifico cualquier campo de la tabla presupuestos 10 veces, voy a tener 10 nuevos registros en PENDIENTES..
Espero no haberlos mareado, por favor ayudenme a resolver esto!!!
gracias...