私は DBMS 試験のために勉強していて、いくつかのトリガーを実行しようとしていました。「標準」の行トリガーでは問題ありませんが、ステートメントトリガーで問題が発生しました。
演習では、特定の列の値の合計が更新されて最小値 (30) を下回った場合に例外を発生させるトリガーを作成します。
したがって、テーブルは次のようになります。
ID | VALUE
----------
1 | 23
2 | 11
3 | 14
更新は次のようになります
UPDATE TABLE SET VALUE = VALUE - 10
前の合計は 48 で、更新後の合計は 18 になるため、これは例外をスローするはずです。
行トリガーを試してみましたが、同じテーブルで選択を行うと「変化するテーブル」の警告がスローされるため、これを探して、トリガーの設計が不十分であることが原因であると考えました。
おそらくステートメント トリガーを実装する必要がありますが、new_table または old_table にアクセスできないようで、それらの記述方法がわかりません。非常に単純に見えるので、それは不自由ですが、有用なものや例が見つかりませんでした。
何か助けはありますか?
前もって感謝します!
編集:
また、new_table/old_table 参照はOracleに存在するようです ..