Informix - Ayuda con Triggers

   
Vista:

Ayuda con Triggers

Publicado por marta (1 intervención) el 06/11/2008 23:21:14
Hola, a ver si alguien puede ayudarme con ésto!

Abajo pongo el código de creación del trigger, éste se crea sin problemas, todos los datos de todas las tablas se insertan correctamente hasta que llego a la inserción de la tabla emisiones, que me sale este error:
-- [Informix][Dynamic Server 2000][Canon] SQL Error (-747) : Table or column matches object referenced in triggering statement.


CREATE PROCEDURE ActualizaCanon(codProd LIKE Distribuciones.cod_producto, numDist LIKE Distribuciones.num_distribucion)

---------------------------------------------------------------------------------------------------------------------

DEFINE importe INT;

DEFINE cont INT;

DEFINE nomMetrica LIKE Metricas.Nombre;


LET nomMetrica = (SELECT Nombre_metrica FROM Distribuciones where Cod_producto = codProd AND Num_distribucion = numDist);




LET cont = (SELECT COUNT(*) FROM EMISIONES WHERE Cod_producto = codProd AND Num_distribucion = numDist);

LET importe = (SELECT Importe_canon FROM Metricas WHERE Nombre = nomMetrica);



UPDATE Distribuciones SET Canon_recaudado = importe*cont WHERE Cod_producto = codProd AND Num_distribucion = numDist;


END PROCEDURE;
---------------------------------------------------------------------------------------------------------------------

CREATE TRIGGER InsertEmisiones

INSERT ON Emisiones

REFERENCING NEW AS new

FOR EACH ROW (EXECUTE PROCEDURE ActualizaCanon(codProd=new.cod_producto, numDist=new.num_distribucion));

---------------------------------------------------------------------------------------------------------------------

CREATE TRIGGER UpdateEmisiones

UPDATE ON Emisiones

REFERENCING OLD as old NEW AS new

FOR EACH ROW (EXECUTE PROCEDURE ActualizaCanon(codProd=new.cod_producto, numDist=new.num_distribucion));

---------------------------------------------------------------------------------------------------------------------

CREATE TRIGGER DeleteEmisiones

DELETE ON Emisiones

REFERENCING OLD AS old

FOR EACH ROW (EXECUTE PROCEDURE ActualizaCanon(codProd=old.cod_producto, numDist=old.num_distribucion));

---------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------

COMMIT;

Un saludo y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder