我在 SQL Server 2005 中这样做。我有一个表,只有一个 int 类型的列,你不能在其中插入 char。
如果我运行它,我将在我的表中插入一行。
INSERT INTO TestTable VALUES(3) --success
INSERT INTO TestTable VALUES('b') --fail, cannot insert char
如果我运行它,我将在我的表中插入零行。因此,事务将 2 个任务组合成一个执行单元。如果一项任务失败,则整个事务都会失败。
BEGIN TRANSACTION
INSERT INTO TestTable VALUES(3)
INSERT INTO TestTable VALUES('b')
COMMIT TRANSACTION
我的问题是: ROLLBACK TRANSACTION 似乎没用,因为我在上面的代码中没有 ROLLBACK 但它仍然被回滚......有人可以帮助我理解这一点吗?