Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com |
||||||||||||||
|
4D v20 R8
REPLICATE
|
REPLICATE lista_replicada |
||
El comando REPLICATE permite replicar los datos de una tabla de una base A en la de una tabla de una base B. Por convención, la base donde se ejecuta el comando se llama "base local" y la base de la cual los datos se replican se llama "base remota".
Este comando sólo puede utilizarse en el marco de un sistema de replicación de base. Para que el sistema funcione, la replicación debe haber sido activada en la base local y en la base remota y cada tabla implicada deberá tener una llave primaria. Para mayor información sobre este sistema, consulte la sección Replicación vía SQL.
Nota: si desea implementar un sistema de sincronización completo, consulte la descripción del comando SYNCHRONIZE.
Pase una lista de campos (virtuales o estándar), separados por comas en lista_replicada. Los campos deben pertenecer a la tabla ref_tabla de la base remota.
La cláusula FROM debe ir seguida de un argumento del tipo ref_tabla que permite designar la tabla de la base remota desde la cual replicar los datos de los campos lista_replicada.
Nota: los campos virtuales de la tabla remota sólo se pueden almacenar en los arrays de la base local.
La cláusula opcional WHERE permite aplicar un filtro preliminar a los registros de la tabla en la base de datos remota; sólo aquellos registros que cumplan los criterios_de_búsqueda serán tenidos en cuenta por el comando.
4D recupera los valores de los campos lista_replicada para todos los registros designados por la cláusula FOR REMOTE STAMP. El valor pasado en esta cláusula puede ser:
Por último, puede aplicar a la selección obtenida las cláusulas opcionales OFFSET y/o LIMIT:
Una vez aplicadas ambas cláusulas, la selección resultante se envía a la base local.
Los valores recuperados se escriben directamente la lista_objetivo de la base local o en los campos estándar especificados por nom_sql de la tabla ref_tabla de la base local.
El argumento lista_objetivo puede contener una lista de campos estándar o una lista de arrays del mismo tipo que los campos remotos (pero no una combinación de ambos). Si el destino del comando es una lista de campos, los registros objetivos serán creados, modificados o eliminados automáticamente en función de la acción almacenada en el campo virtual __ROW_ACTION.
Los conflictos para los registros duplicados que ya existen en la base objetivo (llaves primarias idénticas) se resuelven utilizando las cláusulas de prioridad (opción REMOTE OVER LOCAL y LOCAL OVER REMOTE):
Si la operación de replicación se lleva a cabo correctamente, la variable sistema OK toma el valor 1. Puede controlar este valor desde un método 4D.
Si se producen errores durante la operación de replicación, la operación se detiene cuando ocurra el primer error. La última variable 4d_language_reference de la cláusula LATEST REMOTE STAMP (si se ha especificado) se valoriza con el marcador del registro en el que se produjo el error. La variable sistema OK toma el valor 0. El error generado puede interceptarse por un método de gestión de errores instalado por el comando .
Nota: las operaciones efectuadas por el comando REPLICATE no tienen en cuenta las restricciones de integridad de datos. Esto significa, por ejemplo, que las reglas que rigen las llaves foráneas, unicidad, etc. no son verificadas. Si los datos recibidos pueden afectar la integridad de los datos, debe comprobar los datos después de la operación de replicación. La manera más simple es bloquear, vía el lenguaje 4D o SQL, los registros que se tienen que modificar.
Producto: 4D
Tema: Comandos SQL
Manual de SQL ( 4D v20 R8)