Acceso a tablas temporales en disparadores

emiliomiguez
15 de Noviembre del 2004
Estoy intentando crear un trigger que me elimine un registro de una tabla cuando se inserte en la tabla que tiene el trigger.
El caso es que me da un error 'bad bind variable' al intentar acceder a la tabla :new y no entiendo el por qué.
Si alguién me puede ayudar con la sentencia se lo agradeceré.
Es la siguiente.
CREATE OR REPLACE TRIGGER AFTER
INSERT ON T1 FOR EACH ROW BEGIN
DELETE FROM T2 WHERE T1.Codigo=:new.Codigo;
END;

jc3000
15 de Noviembre del 2004
Te falta el
REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW

abouza
15 de Noviembre del 2004
Hola

DELETE FROM T2 WHERE T1.Codigo=:new.Codigo;

Te has confundido, T1 no existe dentro del trigger, será T2.

Un saludo

jc3000
15 de Noviembre del 2004
Abouza. Eso tampoco es correcto.
Entiendo que quiere que cuando se inserte en la tabla que tiene el trigger, se borre de OTRA tabla. El código correcto sería este:
CREATE OR REPLACE TRIGGER PATATIN AFTER
INSERT ON T1
referencing new as new old as old FOR EACH ROW BEGIN
DELETE FROM T2 WHERE CODIGO= :new.Codigo;
END