Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Remote » SQL Remote システムの作成 » トランザクションログベースのレプリケーション

 

トリガーのレプリケーション

通常、リモートデータベースには、統合データベースに存在するトリガーと同じトリガーが定義されています。

デフォルトでは、SQL Remote はトリガーによって実行される動作をレプリケートしません。代わりに、統合データベースでトリガーを起動するアクションが、リモートデータベースにレプリケートされると、その複製トリガーはリモートデータベースで自動的に起動します。これによって、パーミッションに関する問題と各動作が 2 回発生する可能性を回避します。この原則には次のような例外があります。

  • RESOLVE UPDATE トリガーのレプリケーション   競合解析または RESOLVE UPDATE トリガーが実行する動作は、統合データベースから、競合を発生させたメッセージを送信したリモートデータベースを含む、すべてのリモートデータベースにレプリケートされます

  • BEFORE トリガーのレプリケーション   更新中のローを変更する BEFORE トリガーの動作は、UPDATE 文が動作する前にレプリケートされます

    たとえば、ローの更新回数を追跡するカウンターカラムをロー内で増加させる BEFORE UPDATE トリガーは、レプリケートされると 2 回カウントが行われます。これは、UPDATE 文がレプリケートされると、リモートデータベースの BEFORE UPDATE トリガーが起動されるためです。

    また、カラムを最終更新時間に設定する BEFORE UPDATE トリガーは、UPDATE 文がレプリケートされた時間を取得します。

    この問題を回避するには、サブスクライバーデータベースに BEFORE UPDATE トリガーが存在しないこと、または BEFORE UPDATE トリガーがレプリケートされた動作を実行しないことを確認してください。

 トリガーの動作をレプリケートするオプション
 トリガーエラーの回避
 抽出ユーティリティ (dbxtract)
 参照