通常、リモートデータベースには、統合データベースに存在するトリガーと同じトリガーが定義されています。
デフォルトでは、SQL Remote はトリガーによって実行される動作をレプリケートしません。代わりに、統合データベースでトリガーを起動するアクションが、リモートデータベースにレプリケートされると、その複製トリガーはリモートデータベースで自動的に起動します。これによって、パーミッションに関する問題と各動作が 2 回発生する可能性を回避します。この原則には次のような例外があります。
RESOLVE UPDATE トリガーのレプリケーション 競合解析または RESOLVE UPDATE トリガーが実行する動作は、統合データベースから、競合を発生させたメッセージを送信したリモートデータベースを含む、すべてのリモートデータベースにレプリケートされます。
BEFORE トリガーのレプリケーション 更新中のローを変更する BEFORE トリガーの動作は、UPDATE 文が動作する前にレプリケートされます。
たとえば、ローの更新回数を追跡するカウンターカラムをロー内で増加させる BEFORE UPDATE トリガーは、レプリケートされると 2 回カウントが行われます。これは、UPDATE 文がレプリケートされると、リモートデータベースの BEFORE UPDATE トリガーが起動されるためです。
また、カラムを最終更新時間に設定する BEFORE UPDATE トリガーは、UPDATE 文がレプリケートされた時間を取得します。
この問題を回避するには、サブスクライバーデータベースに BEFORE UPDATE トリガーが存在しないこと、または BEFORE UPDATE トリガーがレプリケートされた動作を実行しないことを確認してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |