ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ajuda Trigger FireBird

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
rafael_slash
Novato
Novato


Registrado: Terça-Feira, 12 de Abril de 2011
Mensagens: 59
Localização: Fortaleza/CE

MensagemEnviada: Qui Set 08, 2011 5:35 pm    Assunto: Ajuda Trigger FireBird Responder com Citação

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
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB