- Este tópico contém 19 respostas, 7 vozes e foi atualizado pela última vez 17 anos, 1 mês atrás por
jspaulonci.
- Você deve fazer login para responder a este tópico.
› Fóruns › SQL e PL/SQL › Rejeitar o registro via trigger de insert
Airton,
Recomendo que tu faça assim:
create or replace trigger trg_tabela_teste
before insert on tabela_teste
for each row
begin
if :new.estado = ‘SS’ then
null;
end if;
end;
Assim, quando o estado for igual a ‘SS” o registro não será incluído.
O null é usado simplesmente para que tu tenha algo dentro o IF. E recomendo que tu comente bem esse código, pois pode ficar confuso.
Mesmo utilizando o NULL o registro foi gravado.
Airton,
uma Check Constraint nessa coluna não resolve teu problema nao?
[]’s
Armando Veloso.
E se fizesse o teste na aplicação, antes de mandar o comando de insert para o banco?
if estado ‘SS” then
insere no banco
end if
Dessa maneira é mais fácil e extremamente funcional.
Se você retornar um RAISE da trigger para o procedimento que iniciou o insert na tabela, depois no programa que inicia o insert , você trata com Exception When others ou trata o erro do RAISE, trate o fluxo e contine o processo a partir da exception, falando assim parace fácil, acho interessante testar, de qualquer maneira o mais fácil é você tratar essa regra no próprio procedimento antes de fazer o insert.
Abraços
Spaulonci
› Fóruns › SQL e PL/SQL › Rejeitar o registro via trigger de insert