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:
Abs
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