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 

Trigger não atualiza tabela [RESOLVIDO]

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


Registrado: Quarta-Feira, 7 de Mai de 2008
Mensagens: 365

MensagemEnviada: Seg Mai 22, 2017 9:47 am    Assunto: Trigger não atualiza tabela [RESOLVIDO] Responder com Citação

Bom dia pessoal.

Montei uma trigger (Firebird) para atualizar a tabela de agenda de contatos sempre que o telefone for alterado na tabela de terceiros. Porém se o campo telefone estiver vazio a tabela de agenda não é atualizada. Mas se eu alterar novamente e o campo telefone já estiver preenchido aí funciona. Minha trigger:

Código:
AS
begin
  if (OLD.ter_fone1 <> NEW.ter_fone1) then
  BEGIN
    update agenda_contatos SET FONE1 = NEW.ter_fone1 Where CodCad = old.ter_codigo;
  END
end


Tem alguma coisa errada na trigger?

Grato


Editado pela última vez por Mark1 em Seg Mai 22, 2017 12:57 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Mai 22, 2017 9:56 am    Assunto: Responder com Citação

Bom dia,

O problema está ocorrendo quando o campo está nulo?
Se for experimente adicionar condições específicas para detectar essa situação:

Código:
  if ((OLD.ter_fone1 <> NEW.ter_fone1) or
      (OLD.ter_fone1 is null) or
      (NEW.ter_fone1 is null)) then


Espero que ajude


Editado pela última vez por imex em Dom Out 01, 2023 4:10 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mark1
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 7 de Mai de 2008
Mensagens: 365

MensagemEnviada: Seg Mai 22, 2017 10:20 am    Assunto: Responder com Citação

imex escreveu:
Bom dia,

O problema está ocorrendo quando o campo está nulo?
Se for experimente adicionar condições específicas para detectar essa situação:

Código:
  if ((OLD.ter_fone1 <> NEW.ter_fone1) or
      (OLD.ter_fone1 is null) or
      (NEW.ter_fone1 is null)) then


Espero que ajude



Grande Imex !!

Resolveu. Só não entendi porque tenho que fazer este tratamento. O NULL não é o mesmo que NADA? Se inseri um valor e o mesmo for comparado com NADA então é diferente. É o que eu acho.

Porém, independente disto agradeço pela ajuda.

Abraço
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Mai 22, 2017 11:47 am    Assunto: Responder com Citação

O null tem um comportamento diferente de todos os outros valores.
O null não é igual a nenhum valor (nem mesmo outro null) e não é diferente de nenhum valor.

Abs
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
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