Pessoal boa tarde.
Gostaria de tirar uma dúvida.
Teria como eu criar uma trigger de before delete, por exemplo e, colocar uma cláusula e, se ela for verdadeira, não executar o delete?
Por exemplo:
Trigger de before delete, mas, se a=1, ela não dispara?
isso teria q vir da aplicação?
Grato,
Trevisolli
Trigger Before Delete
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
-
- Rank: Estagiário Sênior
- Mensagens: 13
- Registrado em: Ter, 01 Nov 2005 11:53 pm
- Localização: São Paulo
- Contato:
você pode criar esse tipo de regra na trigger sim (má idéia). Em minha opinião o lugar certo para isso é na aplicação, na lógica.
Para exemplo da trigger você poderia:
Para exemplo da trigger você poderia:
ops$marcio@LNX10GR2> create table t ( x int );
Table created.
ops$marcio@LNX10GR2>
ops$marcio@LNX10GR2> create or replace trigger t_bi_fer
2 before insert on t for each row
3 begin
4 if ( :new.x = 1 ) then
5 raise_application_error(-20001, 'Aqui não!');
6 end if;
7 end;
8 /
Trigger created.
ops$marcio@LNX10GR2> show error
No errors.
ops$marcio@LNX10GR2>
ops$marcio@LNX10GR2> insert into t values ( 0 );
1 row created.
ops$marcio@LNX10GR2> insert into t values ( 1 );
insert into t values ( 1 )
*
ERROR at line 1:
ORA-20001: Aqui não!
ORA-06512: at "OPS$MARCIO.T_BI_FER", line 3
ORA-04088: error during execution of trigger 'OPS$MARCIO.T_BI_FER'
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Uma outra forma, que talvez não se aplica ao caso do trevisolli, é criar uma VIEW e aplicar uma trigger INSTEAD OF nela.
Daí, dentro dessa trigger, você testa a condição e aplica ou não o DELETE na tabela original...
(é claro, nesse caso não é garantido o fato do usuário aplicar um delete diretamente na tabela)... ou seja, não serve pra muita coisa...
Daí, dentro dessa trigger, você testa a condição e aplica ou não o DELETE na tabela original...
(é claro, nesse caso não é garantido o fato do usuário aplicar um delete diretamente na tabela)... ou seja, não serve pra muita coisa...
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
está falando de comparar um campo com outro (de outra tabela) dentro de uma trigger before delete ?
Basta você fazer o select desejado dentro da trigger.
É isso? Se não for, explique melhor o que você quer fazer.
Basta você fazer o select desejado dentro da trigger.
É isso? Se não for, explique melhor o que você quer fazer.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Majestic-12 [Bot] e 12 visitantes