3.3.6 トリガが定義されている表のデータ連動
表に定義されるトリガには,ユーザが定義するトリガと,HiRDBによって自動的に定義されているトリガがあります。トリガが定義されている表をデータ連動する場合に必要な作業について説明します。
(1) ユーザによるトリガが定義されている表のデータ連動
ユーザによるトリガが定義された表をデータ連動すると,抽出側DBでトリガSQLが実行されたにもかかわらず,データ連動後,反映側DBでもトリガが実行されるため,DBに不整合が発生することがあります。
DBに不整合が発生することがあるのは,次のような場合です。
-
BEFOREトリガでルーチン制御SQLの代入文を使用した場合
-
レプリケーション対象となる反映先の表にAFTERトリガを定義した場合
これらの条件に当てはまる場合は,反映環境定義でcontrol_triggerオペランドにnot_executeを設定してください。
- 注意
-
-
反映対象となる表へルーチン制御SQLのファイル出力文をAFTERトリガに定義した場合,control_triggerオペランドにnot_executeを指定するとファイルに出力されません。
-
反映対象表にトリガを定義して反映情報編集インタフェースの関数内でHiRDBにアクセスする場合,反映環境定義のcontrol_triggerオペランドは無効になります。
-
(2) HiRDBによるトリガが定義されている表のデータ連動
参照制約が定義された表で,参照制約動作にCASCADEを指定している場合,その表にはHiRDBによるトリガが定義されています。抽出元HiRDB,反映先HiRDBのデータ連動対象の表に参照制約動作にCASCADEが指定されている場合,次に示す条件を満たしてください。
前提条件
-
反映環境定義でcontrol_reference_triggerオペランドにnot_executeを指定する
-
反映環境定義でcheck_pendingオペランドにuseを指定する
-
参照制約が定義された表をすべてデータ連動の対象とする
-
抽出側と反映側の被参照表と参照表の制約を同じ構成にする
- 制限事項
-
反映情報編集UOCには,参照制約を定義した表は指定できません。
これらの条件を満たした上でデータ連動をすると,反映対象表に参照制約が定義されていた場合,該当する表が検査保留状態になります。表単位に整合性チェックユティリティを実行して検査保留状態を解除してください。