トリガ利用時の注意事項を説明します。
トリガが返すエラー番号により、以下のようにデータベースへの格納処理を制御します。
格納処理を迂回するためには、”表A.12 格納処理の迂回時にトリガが返すエラー番号”に示すエラー番号[注1]を返す必要があります。トリガ終了後、格納迂回したことを示すエラーログ(エラーログ識別番号LT20002)が出力され[注2]、格納処理は継続します。
SQL Serverデータベースの場合、エラー番号60999(エラーの重大度レベル16(その他のユーザーエラー)、エラーメッセージのテキスト’continue the Transactional Replication’)を事前に登録する必要があります。エラー番号の登録方法については、SQL Serverのマニュアルを参照してください。
トリガ内でエラーが発生し、”表A.12 格納処理の迂回時にトリガが返すエラー番号”に示すエラー番号を返さない場合は、エラーログ(エラーログ識別番号LT20001)が出力され[注2]、格納処理は中止します。
トリガ内でエラーが発生せず、”表A.12 格納処理の迂回時にトリガが返すエラー番号”に示すエラー番号を返さない場合は、格納処理は正常として扱います。
[注1]Symfoware/RDBではSIGNAL文に指定するSQLSTATE値および例外メッセージを示します。OracleデータベースではRaise_application_error文に指定するエラー番号を示します。SQL ServerデータベースではRAISERROR文に指定するエラー番号を示します。
[注2]エラーログの採取を行わない場合、エラーログは出力されません。
データベース | エラー番号 |
---|---|
Symfoware/RDB | SQLSTATE値に’60xxx’(xxx:0~9およびA~Zの任意の文字3桁)を指定します。例外メッセージに’60999’を指定します。 |
Oracleデータベース | -20999 |
SQL Serverデータベース | 60999 |
トリガの対象となるSQL文とトリガの種別(実行する契機と実行する方式の組合せ)について考慮する必要があります。
表に対するトリガの対象となるSQL文は、以下のとおりです。
INSERT文
UPDATE文
DELETE文
表に対するトリガの種別は、以下のとおりです。
BEFORE(Symfoware/RDB、Oracleデータベース)
トリガの対象となるSQL文を実行する前に、トリガを実行します。
AFTER
トリガの対象となるSQL文を実行したあとに、トリガを実行します。
INSTEAD OF(SQL Serverデータベース)
トリガの対象となるSQL文を実行せずに、トリガだけを実行します。
詳細については、各データベース製品のマニュアルを参照してください。