あなたの INSERT ステートメントは常にトランザクションで実行されます。トランザクションを明示的に定義しているか、定義していない場合、SQL Server は暗黙的なトランザクションを使用します。
テーブルに 1 つ (または複数) の行を挿入しています。次に - まだトランザクション内で - AFTER INSERT トリガーが実行され、特定の条件がチェックされます - 通常は Inserted を使用します 挿入された行を含む、トリガー内で使用可能な疑似テーブル。
ROLLBACK TRANSACTION を呼び出した場合 あなたのトリガーで、はい - あなたのトランザクションは、それが行っていたすべてのことでロールバックされます まるで INSERT 決して起こらなかった - データベーステーブルには何も表示されません。
また:FOR INSERT AFTER INSERT と同じです SQL Server - トリガーは後に実行されます INSERT ステートメントはその役割を果たしました。
心に留めておくべきこと (多くのプログラマーが誤解しています):トリガーは ステートメントごとに 1 回起動されます。 - しない 1行に1回!したがって、一度に 20 行を挿入すると、トリガーは 1 回 起動されます。 そして Inserted トリガー内の疑似テーブルには 20 行が含まれます。トリガーを書くときはそれを考慮に入れる必要があります - あなたはそうではありません 挿入される単一の行だけを常に処理します!