sql >> データベース >  >> RDS >> Sqlserver

SQL Server - 挿入後/挿入用 - ロールバック

    あなたの INSERT ステートメントは常にトランザクションで実行されます。トランザクションを明示的に定義しているか、定義していない場合、SQL Server は暗黙的なトランザクションを使用します。

    テーブルに 1 つ (または複数) の行を挿入しています。次に - まだトランザクション内で - AFTER INSERT トリガーが実行され、特定の条件がチェックされます - 通常は Inserted を使用します 挿入された行を含む、トリガー内で使用可能な疑似テーブル。

    ROLLBACK TRANSACTION を呼び出した場合 あなたのトリガーで、はい - あなたのトランザクションは、それが行っていたすべてのことでロールバックされます まるで INSERT 決して起こらなかった - データベーステーブルには何も表示されません。

    また:FOR INSERT AFTER INSERT と同じです SQL Server - トリガーは後に実行されます INSERT ステートメントはその役割を果たしました。

    心に留めておくべきこと (多くのプログラマーが誤解しています):トリガーは ステートメントごとに 1 回起動されます。 - しない 1行に1回!したがって、一度に 20 行を挿入すると、トリガーは 1 回 起動されます。 そして Inserted トリガー内の疑似テーブルには 20 行が含まれます。トリガーを書くときはそれを考慮に入れる必要があります - あなたはそうではありません 挿入される単一の行だけを常に処理します!



    1. ResultSet.getTimestamp(date)とResultSet.getTimestamp(date、Calendar.getInstance(tz))

    2. ORA-12015:複雑なクエリから高速リフレッシュのマテリアライズド・ビューを作成できません

    3. Oracle-sqlおよびMysqlの共通の日付フォーマット関数

    4. Varchar2とcharの主な違いは何ですか