【发布时间】:2012-05-07 21:33:32
【问题描述】:
我在 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 但它仍然被回滚....有人可以帮助我理解这一点吗?
【问题讨论】:
-
如果您的语句有 none 失败,但您仍想撤销更改,
ROLLBACK非常有用。 :) -
这就是你的全部代码吗? (或至少所有相关代码)
-
@MilkyWayJoe:是的,这就是我的全部代码。仅供学习。
标签: sql-server sql-server-2005 transactions