web-dev-qa-db-ja.com

FORトリガーとAFTERトリガーの違いは?

FORトリガーとAFTERトリガーの違いは何ですか?

107
sqlchild

違いはありません、彼らは同じことをします。

CREATE TRIGGER trgTable on dbo.Table FOR INSERT,UPDATE,DELETE

と同じです

CREATE TRIGGER trgTable on dbo.Table AFTER INSERT,UPDATE,DELETE

INSTEAD OFトリガーは異なり、適切な値を基になるテーブルに挿入するために、挿入の前と代わりに起動し、ビューで使用できます。

136
Ben

@ Ben は絶対に正しい。

こちらがMSDNの記事です Exploring SQL Server Triggers

記事の段落:

この構文は、SQL Serverの古いバージョンでも受け入れられます。ただし、SQL Server 2000には2種類のトリガーがあるため、FORトリガーをAFTERトリガーと呼びます。したがって、この記事の残りの部分では、AFTERまたはINSTEAD OFトリガーを参照します。

前に見たAFTERトリガーと同様に、このトリガーはlastnameフィールドに変更が加えられないようにします。ただし、このビジネスルールの実装方法は前の例とは異なります。 UPDATEステートメントの代わりにINSTEAD OFトリガーが起動するため、INSTEAD OFトリガーはビジネスルールテストに合格したかどうかを評価します。ビジネスルールテストに合格した場合、更新を行うには、INSTEAD OFトリガーが明示的にUPDATEステートメントを再度呼び出す必要があります。

12
Waqas Raja

AFTERは、トリガーSQLステートメントで指定されたすべての操作が正常に実行された場合にのみDMLトリガーが起動されることを指定します。このトリガーが起動する前に、すべての参照カスケードアクションと制約チェックも成功する必要があります。 FORが指定された唯一のキーワードである場合、AFTERがデフォルトです。

AFTERトリガーはビューで定義できません。

INSTEAD OFトリガーSQLステートメントの代わりにDMLトリガーが実行されることを指定します。したがって、トリガーステートメントのアクションをオーバーライドします。 INSTEAD OFは、DDLまたはログオントリガーには指定できません。

https://docs.Microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql

2
Nour El-Hoda