Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dark_kirito

Trigger validação de insert

Recommended Posts

Olá galera tudo bom, to começando a mexer com oracle e preciso fazer uma trigger que valide a inserção de uma locadora, tenho a tabela do usuario que tem o campo que diz o maximo de locação que ele pode ter e estava fazendo um count na tabela de locação para ver o numero de locações que ele ja teve e a trigger entrar em ação essa hora, mas não está dando muito certo apesar de tudo, segue meu código.

 

 

 

 

create or replace
TRIGGER VALIDALOCACAO
BEFORE INSERT ON LOCACAO for each row
declare
maxSem number;
locacaoUsuario number :=0;
BEGIN
select maxSemana into maxSem from usuario where usuario.idusuario = :NEW.idusuario ;
select count(idusuario) into locacaoUsuario
from locacao where (locacao.idusuario = :NEW.idusuario);
IF (locacaoUsuario > maxSem) THEN
begin
RAISE_APPLICATION_ERROR (-20001, 'Erro na Locação, por favor tente novamente');
ROLLBACK;
end;
END IF;
END;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece certa, qual o problema ?

 

=======================================

 

Dicas :

 

Para variaveis use uma notação como

 


vn_max_semana 

vn_qtd_locacoes.

 

 

no "rasie" diga o erro

 




RAISE_APPLICATION_ERROR (-20001, 'Locação excedeu o limite !!');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se as aplicações fazem COMMIT ou seja não fica transação pendente.

 

Veja se o campo maxSemana tem valor, valores nulos não entrarão na condição do IF (serão sempre false)

 

Para garantir faça

 

nvl(maxSemana,0)

 

ou troque zero por um valor padrão de retiradas, 1 por exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.