[firebase-br] Erro Trigger Insert Or Update - Firebird 2.1

Neodir Beltrame Moterle neodir.moterle em gmail.com
Ter Ago 3 11:39:04 -03 2010


Tente separar as condições. Outra coisa não seria melhor usar o "OR"
 IF (UPDATING) THEN
   IF ((OLD.CPF<>NEW.CPF) OR (OLD.MATRICULA<>NEW.MATRICULA)) THEN

Sds,

Neodir

Em 3 de agosto de 2010 11:17, Eduardo Belo <beloelogica em gmail.com> escreveu:

> Olá Pessoal!
>
> O objetivo da Trigger abaixo é evitar CPF e MATRICULA em duplicidade, só
> pode aceitar CPF com Matriculas distintas, exemplo:
>
> CPF: 111.111.111-11 - MATRICULA: 123456
> CPF: 111.111.111-11 - MATRICULA: 999999
>
> No Insert está Ok, mas no Update está passando. O que há de errado nesse
> código?
>
> CREATE OR ALTER TRIGGER TRG_CPF_MATRICULA_JA_EXISTE FOR USUARIOS
> ACTIVE BEFORE INSERT OR UPDATE POSITION 0
> AS
> BEGIN
>  IF (INSERTING) THEN
>   IF (EXISTS
>        (SELECT USUARIOS.CPF,USUARIOS.MATRICULA FROM USUARIOS
>        WHERE USUARIOS.CPF=NEW.CPF AND USUARIOS.MATRICULA=NEW.MATRICULA))
> THEN
>         EXCEPTION CPF_MATRICULA_JA_EXISTE;
>  IF (UPDATING) THEN
>    IF (OLD.CPF<>NEW.CPF AND OLD.MATRICULA<>NEW.MATRICULA) THEN
>     IF (EXISTS
>        (SELECT USUARIOS.CPF,USUARIOS.MATRICULA FROM USUARIOS
>        WHERE USUARIOS.CPF=NEW.CPF AND USUARIOS.MATRICULA=NEW.MATRICULA))
> THEN
>         EXCEPTION CPF_MATRICULA_JA_EXISTE;
> END
>
> Obrigado a todos que ajudarem.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista