4D v16REPLICATE |
||||||||||||||
|
4D v16
REPLICATE
REPLICATE
La commande REPLICATE vous permet de répliquer les données d’une table d’une base A dans celles d’une table d’une base B. Par convention, la base sur laquelle est exécutée la commande est nommée "base locale" et la base de laquelle les données sont répliquées est nommée "base distante". Cette commande peut être utilisée uniquement dans le cadre d’un système de réplication de base. Pour que le système fonctionne, la réplication doit avoir été activée côté base distante et côté base locale et chaque table impliquée doit comporter une clé primaire. Pour plus d’informations, reportez-vous à la section Réplication via le SQL. Note : Si vous souhaitez mettre en place un système de synchronisation complète, reportez-vous à la description de la commande SYNCHRONIZE. Passez dans liste_répliquée une liste de champs (virtuels ou classiques) séparés par une virgule. Les champs doivent appartenir à la table ref_table de la base distante. Note : Les champs virtuels de la table distante ne pourront être stockés que dans des tableaux de la base locale. La clause optionnelle WHERE permet d’appliquer un filtre préalable aux enregistrements de la table dans la base distante ; seuls les enregistrements qui satisfont au critère_recherche sont pris en compte par la commande. 4D récupère ensuite les valeurs des champs liste_répliquée pour tous les enregistrements désignés par la clause FOR REMOTE STAMP. La valeur passée dans cette clause peut être soit :
Enfin, vous pouvez appliquer à la sélection obtenue les clauses optionnelles OFFSET et LIMIT :
Une fois l’ensemble des clauses appliquées, la sélection résultante est envoyée à la base locale. Les valeurs récupérées sont directement écrites dans la liste_cible de la base locale ou dans les champs classiques définis par nom_sql de la table ref_table de la base locale. L’argument liste_cible peut contenir soit une liste de champs standard, soit une liste de tableaux du même type que les champs distants (mais pas une combinaison des deux). Si la destination de la commande est une liste de champs, les enregistrements cibles seront automatiquement créés, modifiés ou supprimés en fonction de l’action stockée dans le champ virtuel __ROW_ACTION. Vous résolvez les conflits pour les enregistrements répliqués qui existent déjà dans la base cible (clés primaires identiques) à l’aide des clauses de priorité REMOTE OVER LOCAL et LOCAL OVER REMOTE :
Si l’opération de réplication de déroule correctement, la variable système OK prend la valeur 1. Vous pouvez contrôler cette valeur depuis une méthode 4D. Si des erreurs se produisent durant l’opération de réplication, l’opération est stoppée à la première erreur rencontrée. La dernière variable source (si elle a été définie) est valorisée avec le marqueur de l’enregistrement dans lequel l’erreur s’est produite. La variable système OK prend la valeur 0. L’erreur générée peut être interceptée par une méthode de gestion d’erreurs installée par la commande ON ERR CALL. Note : Les opérations effectuées par la commande REPLICATE ne tiennent pas compte des contraintes d’intégrité des données. Cela signifie par exemple que les règles de clés étrangères, d’unicité, etc. ne sont pas vérifiées. Si les données reçues peuvent remettre en cause l’intégrité des données, vous devez les vérifier à l’issue de l’opération de réplication. Le moyen le plus simple est de verrouiller via le langage 4D ou le langage SQL les enregistrements devant être modifiés.
Voir aussi
|
PROPRIÉTÉS
Produit : 4D
HISTORIQUE
UTILISATION DE L'ARTICLE
4D - Référence SQL ( 4D v16) |
||||||||||||