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 

[Resolvido] Trigger + Procedure Executável.

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


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Qua Ago 01, 2012 10:31 pm    Assunto: [Resolvido] Trigger + Procedure Executável. Responder com Citação

Esta correto se eu fizer uma trigger seguindo o exemplo abaixo?

Código:
set term ^ ;

create trigger nomeTrigger for nomeTabela
active after update position 0
as
  declare variable vCampo1 nomeTipo;
  declare variable vCampo2 nomeTipo;
  declare variable vCampo3 nomeTipo;
  declare variable vCampo4 nomeTipo;
begin  // retorna multiplas linhas.
  for select campo1, campo2, campo3, campo4
      from tabela
      into :vCampo1, :vCampo2, :vCampo3, :vCampo4
  do
  begin  // procedimento armazenado "executável".
     execute procedure nomeProcExec(:vCampo1,:vCampo2,:vCampo3,:vCampo4);
  end
end ^

set term ; ^

"O procedimento armazenado nomeProcExec executa instruções DML, mais expecificamente a cláusula Insert."



Banco de dados Firebird.


Obrigado!
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.


Editado pela última vez por pestana em Qui Ago 02, 2012 1:54 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Qui Ago 02, 2012 10:51 am    Assunto: Responder com Citação

Porque será que está duplicando registro ao incluir na tabela?

p.ex: o select retornou os valores para as variaveis vCampo1, vCampo2, vCampo3, vCampo4 {
1,2,3,4
5,6,7,8}

mas quando eu vou consultar o banco esta assim:
1) 1,2,3,4
2) 5,6,7,8
3) 1,2,3,4
4) 5,6,7,8

ou seja, incluiu 4 registros mas repetidos, quando na verdade deveria ter 2 registros:
1) 1,2,3,4
2) 5,6,7,8


Obrigado!
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Qui Ago 02, 2012 12:15 pm    Assunto: Responder com Citação

Gente me veio a cabeça que em um outro lugar do código eu estou atualizando um campo qualquer desta mesma a tabela, como eu estou utilizando o "update" certamente está disparando este evento "after update", fazendo com que a tabela possui registros duplicados.

Eu descomfio que o problema seja isso. Eu vou fazer os testes e logo depois eu volto a postar a solução.


Qualquer ajuda é sempre bem-vinda!

Obrigado!
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Qui Ago 02, 2012 1:53 pm    Assunto: Responder com Citação

Como eu já havia desconfiado o problema era isso mesmo!
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
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