4D v14REPLICATE |
||||||||||||||
|
4D v14
REPLICATE
REPLICATE
REPLICATEコマンドを使用して、データベースAのテーブルのデータをデータベースBのテーブルに複製できます。用語としてコマンドが実行されるデータベースを"ローカルデータベース"、データ複製元のデータベースを"リモートデータベース"呼びます。 このコマンドはデータベースの複製システムのフレームワークでのみ使用することができます。システムが動作するためには、複製がローカルデータベースとリモートデータベースで有効にされ、関連するそれぞれのテーブルが主キーを持たなくてはなりません。このシステムに関する詳細はSQLを使用した複製 を参照してください。 Note: 完全な同期システムを実装したい場合はSYNCHRONIZEコマンドを参照してください。 replicated_listにはコンマで区切った (仮想あるいは標準の) フィールドリストを渡します。フィールドはリモートデータベースのtable_referenceテーブルに属していなければなりません。 Note:リモートデータベースの仮想フィールドはローカルデータベースの配列にのみ格納できます。 オプションのWHERE句を使用して、リモートデータベースのテーブルのレコードに予備的なフィルタを適用することができます。これによりsearch_conditionに合致するレコードのみがこのコマンドの処理対象となります。 そして4DはFOR REMOTE STAMP句で指定されたすべてのレコードのreplicated_listフィールドの値を取り出します。この句に渡すことにできる値は以下のいずれかです:
最後にオプションのOFFSET かつ/またはLIMIT句を取得したセレクションに適用できます:
両方の句が適用されると、結果のセレクションがローカルデータベースに送信されます。 取り出した値は直接ローカルデータベースのtarget_listまたはtable_referenceテーブルのsql_nameで指定した標準フィールドに書き込まれます。target_list引数は標準のフィールドまたはリモートフィールドと同じ型の配列リストを含むことができます (両方を組み合わせることはできません)。データの格納先がフィールドリストの場合、仮想__ROW_ACTIONフィールドに格納されたアクションに基づき、ターゲットのレコードが自動で作成、更新、または削除されます。 ターゲットデータベース中に既に存在する複製されたレコードのコンフリクト (同じ主キー値) は優先度を指定する句 (REMOTE OVER LOCAL またはLOCAL OVER REMOTE オプション)を使用して解決します:
複製が正しく実行されるとOKシステム変数に1が設定されます。4Dメソッドでこの値をチェックできます。 複製処理中にエラーが発生すると、処理は最初に発生したエラーで中断されます。最新のソース変数は (指定されていれば) エラーが発生したレコードのスタンプに設定されます。OKシステム変数は0に設定されます。生成されたエラーはON ERR CALLコマンドでインストールされるエラー処理メソッドでとらえることができます。 注: REPLICATEコマンドで実行される処理はデータ整合性制約を考慮に入れません。これは例えば外部キー、重複不可等を管理するルールが検証されないことを意味します。受信したデータがデータ整合性を壊す可能性がある場合、複製処理終了後にデータを検証する必要があります。もっとも簡単な方法は4DまたはSQLランゲージを使用して更新されるレコードをロックすることです。 |
プロパティ
プロダクト: 4D 参照 ARTICLE USAGE
SQLリファレンス ( 4D v14) |
||||||||||||