rafael_slash Novato

Registrado: Terça-Feira, 12 de Abril de 2011 Mensagens: 59 Localização: Fortaleza/CE
|
Enviada: Qui Set 08, 2011 5:35 pm Assunto: Ajuda Trigger FireBird |
|
|
Galera, seguinte, eu criei uma trigger para quando incluir um funcionario o mesmo já ser cadastrado como Cliente e Motorista nas tabelas. A trigger esta funcionando perfeitamente no banco em produção.
Porem quando eu fui tentar criar a mesma trigger em outro banco, ou alterar a trigger no banco que ja existe ela, ela fica dando a seguinte mensagem;
Subselect illegal in this context.
O que não entendo, é que a trigger ja esta cadastrada no banco e rodando.
segue a trigger para verificar.
| Código: | CREATE TRIGGER FUNCIONARIOSAU FOR FUNCIONARIOS AFTER UPDATE POSITION 0 AS
DECLARE QUANTCLI INTEGER;
DECLARE QUANTMOT INTEGER;
BEGIN
QUANTCLI = (SELECT COUNT(CPF) FROM CLIENTES WHERE CPF = NEW.CPF);
QUANTMOT = (SELECT COUNT(CPF) FROM MOTORISTAS WHERE CPF = NEW.CPF);
IF (QUANTCLI > 0 ) THEN
BEGIN
Update Clientes
Set Nome = New.Nome,
FANTASIA = New.Nome,
Endereco = New.Endereco,
Bairro = New.Bairro,
Cidade = New.Cidade,
Cep = New.Cep,
Estado = New.UF,
Fone1 = New.Fone,
Cpf = New.CPF,
RG = New.Rg,
SEGMENTO = 'FUNCIONARIO',
DataNasc = New.DtNasc
Where Clientes.Cpf = Old.Cpf;
END
ELSE
BEGIN
IF (NEW.CPF <AND> 0) THEN
BEGIN
if (NEW.CARGO = 'MOTORISTA') THEN
BEGIN
Update Motoristas
Set Nome = New.Nome,
Endereco = New.Endereco,
Bairro = New.Bairro,
Cidade = New.Cidade,
Cep = New.Cep,
UF = New.UF,
Fone1 = New.Fone,
Cpf = New.CPF,
RG = New.Rg,
DataNasc = New.DtNasc,
FUNC = 'S'
Where Motoristas.Cpf = OLD.Cpf;
END
END
ELSE
BEGIN
if (NEW.CARGO = 'MOTORISTA') THEN
BEGIN
IF (NEW.CPF <> '' AND QUANTMOT = 0) THEN
INSERT INTO Motoristas (Codigo,Nome,Endereco, Bairro, Cidade, Cep,UF, Fone1,Cpf,RG,DataNasc, Func)
VALUES((SELECT MAX(CODIGO) FROM MOTORISTAS)+1,New.Nome,New.Endereco,New.Bairro,New.Cidade,New.Cep,New.UF,New.Fone,NEW.CPF,New.Rg,New.DtNasc,'S');
END
END
END |
|
|