Como ignorar todos os tipos de modificações (INSERT, UPDATE, DELETE)
na tabela FOR EACH STATEMENT
TRIGGER
sem lançar/aumentar e EXCEPTION
cancelar toda a transação?
Eu sei que isso pode ser conseguido em BEFORE
FOR EACH ROW
gatilhos retornando NULL
no final do TRIGGER FUNCTION
, mas isso não funciona com FOR EACH STATEMENTs
chamadas de função, pois elas sempre retornam NULL
e as modificações ainda são aplicadas.
(minha motivação nisso é a melhoria de desempenho, já que os gatilhos FOR EACH STATEMENT são mais leves que FOR EACH ROW)
Não há como fazer isso.
As tabelas de transição que utilizam a
REFERENCING
cláusula estão fora de questão, pois só podem ser utilizadas emAFTER
triggers.Você poderia usar uma visualização com um
INSTEAD OF
gatilho que apenas modifica a tabela subjacente em alguns casos, masINSTEAD OF
os gatilhos em nível de instrução só são acionados se o evento for tratado por umINSTEAD OF
gatilho em nível de linha, o que desafiaria sua intenção.