4

これがどのように機能するか 100% 確信が持てないので、SQL 理論について教えていただけると幸いです。

トリガーがあり、それを次のように定義した場合

AFTER DELETE ON xxxx

トランザクション管理の観点から、これがいつ発火するのか疑問に思っていましたか?

したがって、テーブルからレコードを削除すると、commit と入力してトランザクションを終了するまでトリガーは起動しないと想定します。これは正しいです?

もしそうなら、delete ステートメントのコミットは機能するが、何らかの理由でトリガーが失敗した場合、トリガーのみがロールバックされ、実行した元の実行された delete ステートメントは引き続きコミットされると想定します (定義されているため)。削除後)。

誰かがこれを確認できますか?

ありがとう。

4

3 に答える 3

1

AFTER DELETE トリガーは、delete ステートメントが実行された後、コントロールがユーザーに返される前に起動されます。つまり、ユーザーは、delete ステートメントとその後に実行されたコードをトリガーで単一のアクションとして認識します (トリガーが DML のみを実行すると仮定します)。 UTL_TCP を呼び出すようなファンキーなものはありません :-))。

これは、トランザクション管理とは関係ありません。DELETE および AFTER DELETE トリガーが実行されると、コミット、ロールバック、または同じトランザクションで DML ステートメントの実行を継続することを選択できます。

于 2013-10-04T10:15:57.693 に答える