Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||
|
4D v20
REPLICATE
|
REPLICATE lista_replicada |
||
O comando REPLICATE permite replicar os dados de uma tabela de uma base A na de uma tabela de uma base B. Por convenção, a base onde é executado o comando se chama "base local" e a base da qual os dados se replicam se chama "base remota".
Este comando só pode ser utilizado no marco de um sistema de replicação de base. Para que o sistema funcione, a replicação deve ter sido ativada na base local e na base remota e cada tabela implicada deverá ter uma chave primaria. Para maior informação sobre este sistema, consulte a seção Replicação via SQL.
Nota: Se deseja implementar um sistema de sincronização completo, consulte a descrição do comando SYNCHRONIZE.
Passe uma lista de campos (virtuais ou padrão), separados por vírgulas em lista_replicada. Os campos devem pertencer a tabela ref_tabela da base remota.
A cláusula FROM deve ir seguida de um argumento do tipo ref_tabela que permite designar a tabela da base remota desde a qual replicar os dados dos campos lista_replicada.
Nota: Os campos virtuais da tabela remota só podem ser armazenadas nos arrays da base local.
A cláusula opcional WHERE permite aplicar um filtro preliminar aos registros da tabela no banco de dados remoto; só aqueles registros que cumpram com os critérios_de_pesquisa serão levados em consideração pelo comando.
4D recupera os valores dos campos lista_replicada para todos os registros designados pela cláusula FOR REMOTE STAMP. O valor passado nesta cláusula pode ser:
Por último, você pode aplicar a seleção obtida para as cláusulas opcionais OFFSET e/ou LIMIT:
Uma vez aplicadas ambas cláusulas, a seleção resultante se envia a base local.
Os valores recuperados se escrevem diretamente a lista_objetivo da base local ou nos campos padrão especificados por nom_sql da tabela ref_tabela da base local.
O argumento lista_objetivo pode conter uma lista de campos padrão ou uma lista de arrays do mesmo tipo que os campos remotos (mas não uma combinação de ambos). Se o destino do comando é uma lista de campos, os registros objetivos serão criados, modificados ou eliminados automaticamente em função da ação armazenada no campo virtual __ROW_ACTION.
Os conflitos para os registros replicados que já existem na base objetivo (chaves primárias idênticas) se resolvem utilizando as cláusulas de prioridade (opção REMOTE OVER LOCAL e LOCAL OVER REMOTE):
Se a operação de replicação é levada a cabo corretamente, a variável sistema OK toma o valor 1. Pode controlar este valor desde um método 4D.
Caso sejam produzidos erros durante a operação de replicação, a operação é detida quando ocorra o primeiro erro. A última variável fonte (caso especificado) toma o valor com o marcador do registro no qual foi produzido o erro. A variável sistema OK toma o valor 0. O erro gerado pode ser interceptado por um método de gestão de erros instalado pelo comando ON ERR CALL.
Nota: As operações realizadas pelo comando REPLICATE não tem em conta as restrições de integridade de dados. Isto significa, por exemplo, que as regras que regem as chaves externas, singularidade, etc. não são verificadas. Se os dados recebidos podem afetar a integridade dos dados, deve comprovar os dados depois da operação de replicação. A forma mais simples é bloquear, via a linguagem 4D ou SQL, os registros que devem ser modificados.
Produto: 4D
Tema: Comandos SQL
Manual de SQL ( 4D v20)