トリガが起動しない場合、以下を確認する必要がある。
1.トリガが無効になっていないか?
2.トリガが作成される前に登録されたデータに対し、検証をしていないか?
以下、1,2に対する説明。
1.トリガが無効になっていないか?
2.トリガが作成される前に登録されたデータに対し、検証をしていないか?
以下、1,2に対する説明。
1.トリガが無効になっていないか?
→トリガが無効に設定されている場合、トリガは起動しない。
MSDNにも記述されているが、sp_configureサーバーオプションの"nested triggers"が有効になっていないとトリガは起動しない。
2.トリガが起動しない条件が2つ存在する。
・トリガの作成前に登録されている既存データは、検証されない。
→制約等が用意される前に登録されているデータについては、そのままデータとして残る。
・以下の手順で操作した場合、トリガが起動しない。
1.トリガを削除する。
2.無効なデータを追加する。
3.トリガを再作成する。
→最初の条件と同様、2の操作が既存データとして認識されるため、無効なデータが存在してしまう。
【補足事項】
・SQL Server6.5→SQL Server2000以降へのアップグレード時の注意点
→詳細は、MSDN参照。
・Accessを使ってトリガを起動した場合の問題点がある。
→トランザクションは正常に動作するが、メッセージの表示が正常に動作しない。
ADOを使ったプログラムでも同じ事象が再現するので、メッセージの表示は避けるしかない。
→詳細は、[ACC2002] トリガが起動されても、トリガに記述したユーザー定義のエラーメッセージが表示されない参照
→トリガが無効に設定されている場合、トリガは起動しない。
MSDNにも記述されているが、sp_configureサーバーオプションの"nested triggers"が有効になっていないとトリガは起動しない。
2.トリガが起動しない条件が2つ存在する。
・トリガの作成前に登録されている既存データは、検証されない。
→制約等が用意される前に登録されているデータについては、そのままデータとして残る。
・以下の手順で操作した場合、トリガが起動しない。
1.トリガを削除する。
2.無効なデータを追加する。
3.トリガを再作成する。
→最初の条件と同様、2の操作が既存データとして認識されるため、無効なデータが存在してしまう。
【補足事項】
・SQL Server6.5→SQL Server2000以降へのアップグレード時の注意点
→詳細は、MSDN参照。
・Accessを使ってトリガを起動した場合の問題点がある。
→トランザクションは正常に動作するが、メッセージの表示が正常に動作しない。
ADOを使ったプログラムでも同じ事象が再現するので、メッセージの表示は避けるしかない。
→詳細は、[ACC2002] トリガが起動されても、トリガに記述したユーザー定義のエラーメッセージが表示されない参照
- カテゴリ:
- SQL Server
- Access