私は SQL Server 2005 でこれを行っています。テーブルがあります。int 型の列は 1 つだけです。o char を挿入することはできません。
これを実行すると、テーブルに 1 行が挿入されます。
INSERT INTO TestTable VALUES(3) --success
INSERT INTO TestTable VALUES('b') --fail, cannot insert char
これを実行すると、テーブルにゼロ行が挿入されます。したがって、トランザクションは 2 つのタスクを 1 つの実行単位にグループ化します。1 つのタスクが失敗すると、トランザクション全体が失敗します。
BEGIN TRANSACTION
INSERT INTO TestTable VALUES(3)
INSERT INTO TestTable VALUES('b')
COMMIT TRANSACTION
私の質問は次のとおりです。上記のコードに ROLLBACK がないため、 ROLLBACK TRANSACTION は役に立たないように見えますが、それでもロールバックされます....誰かがこれを理解するのを手伝ってくれますか?