Problema con trigger
Hola he seguido este ejemplo para hacer un trigger (tengo una tabla1 y una tabla2 igual que tabla1):
CREATE OR REPLACE TRIGGER nombre_del_trigger
BEFORE DELETE OR UPDATE ON tabla1
REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
BEGIN
INSERT INTO tabla2(campos) VALUES(:OLD.campo1, :OLD.campo2...);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
UPDATE tabla2 SET campo1=:OLD.campo1, campo2=:OLD.campo2... WHERE campo_clave1_tabla2=:OLD.campo_clave1_tabla1 and campo_clave2_tabla2=:OLD.campo_clave2_tabla1...
END;
Y funciona, ¿pero qué hago si quiero que el trigger se dispare solo cuando determinados campos de la tabla1 se modifiquen o que borren el registro?, otra cosa que me he dado cuenta es que si modifico el mismo registro de tabla1 se vuelve a guardar en la misma posición ya antes guardada en tabla2, que debo hacer para que se genere la nueva modificación en otro registro de la tabla2.
Muchas Gracias
CREATE OR REPLACE TRIGGER nombre_del_trigger
BEFORE DELETE OR UPDATE ON tabla1
REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
BEGIN
INSERT INTO tabla2(campos) VALUES(:OLD.campo1, :OLD.campo2...);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
UPDATE tabla2 SET campo1=:OLD.campo1, campo2=:OLD.campo2... WHERE campo_clave1_tabla2=:OLD.campo_clave1_tabla1 and campo_clave2_tabla2=:OLD.campo_clave2_tabla1...
END;
Y funciona, ¿pero qué hago si quiero que el trigger se dispare solo cuando determinados campos de la tabla1 se modifiquen o que borren el registro?, otra cosa que me he dado cuenta es que si modifico el mismo registro de tabla1 se vuelve a guardar en la misma posición ya antes guardada en tabla2, que debo hacer para que se genere la nueva modificación en otro registro de la tabla2.
Muchas Gracias
1 Respuesta
Respuesta de tauriton
1