Fórum Desenvolvimento de Trigger #485519
15/07/2014
0
Estou precisando desenvolver um trigger que bloqueie a deleção de uma requisição quando a mesma ja estiver aprovada, mas porem minha nunca cai na regra que bloqueio, já fiz o select fora da trigger e retorna valor maior que 0.
CREATE OR REPLACE TRIGGER NOME
BEFORE DELETE ON SOLICITACAO
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
w_existe varchar2(30);
BEGIN
IF DELETING THEN
select count (soc_st_descricao)
into w_existe
from OCOR_SOLICITACAO I
where I.sol_codigo = :old.sol_codigo
and I.pad_in_codigo = :old.pad_in_codigo
and I.tab_in_codigo = :old.tab_in_codigo
and I.tau_st_codigo = :old.tau_st_codigo
and I.org_in_codigo = :old.org_in_codigo;
and I.descricao_aprovacao = '_Aprovado'
if w_existe >= 1 then
RAISE_APPLICATION_ERROR(-20205,'Requisição não pode ser excluida.');
END IF;
END IF;
END;
Desde de já Agradeço.
Kaio
Curtir tópico
+ 0Posts
17/07/2014
Alex Lekao
Nao manjo muito de SQL e de Oracle muito menos.
Mas deixa eu entender e quem sabe consigo te ajudar a achar o caminho das pedras. rsrsr
Quando vc executa o script para dar o valor que impessa o bloqueio ele sempre da o valor maior que zero e com isso permite?
A condicional que vc precisa para permitir a exclusao ou nao, eh 0 e 1?
Abraco.
Gostei + 0
17/07/2014
Kaio
Sempre que o count retornar maior ou igual a 1 ele teria que entrar na condição de bloqueio, porem isso não esta acontecendo, se for 0 ele permite excluir.
Abraço
Gostei + 0
17/07/2014
Alex Lekao
Ja vi situacoes parecidas em empresas que trabalhei e o controle disso era feito na aplicacao e nao no banco.
Fica mais facil, acredito.
Agora, acho que deveriamos analisar o Script isoladamente e depois tentar montar a procedure/trigguer.
Vamos tentar analisar a somente o script e conseguir faze-lo retornar o que vc precisa, ele ja esta funcionando corretamente?
Gostei + 0
18/07/2014
Marisiana Battistella
Você verifica a situação e depois utiliza uma estrutura de controle pra realizar o que é necessário em cada condição.
Muito mais simples de se fazer e regra de negócio fica mais visível, pois ela está em um local só.
Gostei + 0
18/07/2014
Marisiana Battistella
Gostei + 0
18/07/2014
Kaio
Fiz um teste amarrando uma solicitação em minha trigger executei e funcionou perfeitamente o problema então esta no :old, o select não esta conseguindo trazer o valor esperado.
Abraço
Gostei + 0
18/07/2014
Kaio
Com ERP que trabalho eu não tenho acesso a certos procedimentos por serem criptografados, por isso estou fazendo uma trigger separada para bloquear essa exclusão.
Abraço.
Gostei + 0
18/07/2014
Alex Lekao
ja aconteceu isso comigo, eu fiz uma triguer para fazer uma operacao que o ERP nao considerava os caras foram la e removaram a trigguer e bloquearam o acesso a estes recursos. kkkk
Mas no caso seria justamente essa a questao, precisamos avaliar o script para ver o que esta errado e que nao traz o retorno esperado.
Gostei + 0
19/07/2014
Marisiana Battistella
Com ERP que trabalho eu não tenho acesso a certos procedimentos por serem criptografados, por isso estou fazendo uma trigger separada para bloquear essa exclusão.
Abraço.
Humm.. entendi!
Mas como vc está trabalhando no ERP e não tem acesso aos códigos dele? Não entendi o pq disso...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)