[firebase-br] RES: Erro Trigger Insert Or Update - Firebird 2.1
Ivan Guimarães Meirelles
igmeirelles em gmail.com
Ter Ago 3 11:56:10 -03 2010
Olá Eduardo...
Experimente trocar AND por OR:
IF (OLD.CPF <> NEW.CPF OR OLD.MATRICULA <> NEW.MATRICULA) THEN
Usando AND a condição somente será verdadeira se CPF e MATRICULA forem
modificados ao mesmo tempo.
Se o usuário modificar somente CPF ou somente MATRICULA, não seria feita a
verificação.
Espero ter ajudado.
Um abraço.
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Eduardo Belo
Enviada em: terça-feira, 3 de agosto de 2010 10:17
Para: FireBase
Assunto: [firebase-br] Erro Trigger Insert Or Update - Firebird 2.1
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