[Resolvido] Problema com trigger
Boa noite.
Fiz uma trigger que deleta o registro da tabela caso o um determinado valor não seja o esperado. Ao executar a função era exibido um erro referente a tabela mutante.
Pesquisei e vi que o Oracle (pra variar) não permite que uma trigger altere o valor da tabela que a disparou.
Depois vi que existe uma propriedade chamada PRAGMA Autonomous_Transaction. Esta propriedade até funciona, mas não permite alterar ou deletar o registro que foi inserido no momento que foi executado a trigger.
Segue o código:
CREATE OR REPLACE
TRIGGER TRG_TABELA AFTER INSERT ON TABELA FOR EACH ROW
DECLARE
PRAGMA Autonomous_Transaction;
BEGIN
IF :NEW.CODIGO_RETORNO_WS <> 0 THEN
DELETE FROM TABELA WHERE ID = :NEW.ID;
COMMIT;
END IF;
END;
A trigger permite eu alterar os outros registros que já estavam na tabela, mas não permite eu fazer qualquer tipo de alteração no registro correspondente ao :NEW.ID.
Existe outra forma de se fazer isto?
Vlw!
Discussão (3)
Carregando comentários...