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

Eduardo Belo beloelogica em gmail.com
Ter Ago 3 11:17:21 -03 2010


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.



Mais detalhes sobre a lista de discussão lista