Um conhecimento só é válido quando compartilhado.

domingo, 14 de março de 2010

Firebird - UPDATE OR INSERT INTO

Um dia desse desenvolvendo meu PAF, que usa Firebird, abri o IBExpert para gerar um script de insert, la eu vi que tinha uma opção chamada "UPDATE OR INSERT INTO", com essa opção selecionada, as colunas e a chave primaria marcada recebi um script da seguinte forma:
UPDATE OR INSERT INTO B01_FON (B01_BANCO, B01_NOME)
                       VALUES ('001', 'BRASIL S/A')
                     MATCHING (B01_BANCO);
Me Restava descobrir se essa sintaxe, ia funcionar executando dentro de delphi, e para mimha surpresa funcionou 100%, ou seja está ai uma maneira MUITO facil de se fazer sincronismo de dados no Firebird, pois executando esse Script o firebird checa pelo campo chave que está em MATCHING (B01_BANCO) (caso tenha mais campos na chave primária, basta separar por virgula), se não existir essa chave ele executa o INSERT, e se existir ele executa o UPDATE comparando a diferença campo a campo, que não pertença a chave primaria.

Abs

6 comentários :

  1. Ae Isaque!
    Muito boa dica, eu não conhecia o comando.
    Muito útil!

    Abraços, lampada =)

    ResponderExcluir
  2. Bom dia Isaque,

    Creio que existe restrição de versão do Firebird. Ex: versão 2.1 e 2.5 funcionam, versões anteriores não.

    ResponderExcluir
  3. Isaque, boa tarde! eu uso este comando para sincronizar tabelas iguais em dois bancos de dados diferentes usando o IbExpert. Eu exporto a consulta da tabela do banco1 e rodo o script no banco2 inserindo ou atualizado os dados, mas gostaria de saber como implementar isto no delphi. Tem como me dá uma dica.? valeu. cldeus@hotmail.com

    ResponderExcluir
    Respostas
    1. Cleylerson, você terá que 1o fazer um select na tabela do DB origem, montando desse select um loop, dentro desse loop a cada registro navegado, você deve montar um UPDATE OR INSERT INTO TABLE do DB destino.

      Excluir
  4. Olá Cleylerson.
    Estou com a mesma dúvida que você. Conseguiu fazer no delphi? tem como me ajudar? abraço, valtencir.

    ResponderExcluir
  5. MUITO BOA A DICA. RESOLVEU ALGUNS PROBLEMAS QUE TINHA PARA ATUALIZAR TABELAS

    ResponderExcluir

SAC Automação Delphi e Lazarus

SAC Automação Delphi e Lazarus
Assine nosso SAC Automação Delphi e Lazarus para ter suporte técnico especializado em desenvolvimento

Quem sou eu

Minha foto

Proprietário/Administrador de Empresa em TI (Tecsis Informática)
  • Autor dos projetos OpenSource ORMBr, e DBCBr
  • Autor dos componentes ACBrInstall, ACBrSped, ACBrPaf, ACBrInStore, ACBrDownload.

Total de visualizações

Postagem em destaque

ORMBr - Mapeamento objeto-relacional

Mapeamento objeto-relacional ( ou ORM, do inglês: Object-relational mapping ) é uma técnica de desenvolvimento utilizada para reduzir...

Todo os direitos reservados.. Tecnologia do Blogger.

Seguidores

Google+ Seguindores