FOR
とAFTER
トリガーの違いは何ですか?
FOR
とAFTER
トリガーの違いは何ですか?
回答:
違いはありません。彼らは同じことをします。
CREATE TRIGGER trgTable on dbo.Table FOR INSERT,UPDATE,DELETE
と同じです
CREATE TRIGGER trgTable on dbo.Table AFTER INSERT,UPDATE,DELETE
INSTEAD OF
トリガは異なり、火災の前に、その代わりに、インサートの、基礎となるテーブルに適切な値を挿入するために、ビューに使用することができます。
@ベンは絶対に正しいです。
これは、MSDN記事「SQL Serverトリガーの探索」です
記事の段落:
その構文は、SQL Serverの古いバージョンでも使用できます。ただし、SQL Server 2000には2種類のトリガーがあるため、FORトリガーをAFTERトリガーと呼びます。したがって、この記事の残りの部分では、AFTERまたはINSTEAD OFトリガーのいずれかを参照します。
前に見たAFTERトリガーと同様に、このトリガーはlastnameフィールドが変更されないようにします。ただし、このビジネスルールの実装は、前の例とは異なります。INSTEAD OFトリガーはUPDATEステートメントの代わりに起動するため、INSTEAD OFトリガーは、ビジネスルールテストに合格したかどうかを評価します。ビジネスルールテストに合格した場合、更新を行うには、INSTEAD OFトリガーが明示的にUPDATEステートメントを再度呼び出す必要があります。
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