3

ROLLBACK TRAN回滚我的 SP 中的所有内容吗?(包括对另一个 SP 的调用)

例子:

BEGIN TRAN

  INSERT INTO (table1)
  VALUES (1,'abc')

  EXEC InsertTable2

  INSERT INTO (table3)
  VALUES (1,'abc')

ROLLBACK TRAN
4

3 回答 3

5

来自 msdn

将显式或隐式事务回滚到事务的开头,或事务内的保存点。您可以使用 ROLLBACK TRANSACTION 擦除从事务开始或保存点所做的所有数据修改。它还释放事务持有的资源。

所以是的

于 2013-03-05T17:43:24.580 回答
3

在不知道不可能的定义的InsertTable2情况下肯定地说。这是一个没有的例子。

CREATE TABLE table1
(
Num int,
String char(3)
)
GO

CREATE PROC InsertTable2
AS
COMMIT;
BEGIN TRAN;

GO


BEGIN TRAN

  INSERT INTO table1
  VALUES (1,'abc')

  EXEC InsertTable2

  INSERT INTO table1
  VALUES (1,'abc')

ROLLBACK TRAN

GO

SELECT *
FROM table1

GO

DROP TABLE table1

DROP PROC InsertTable2

但假设一个理智的定义,答案是“是”

于 2013-03-05T18:01:57.253 回答
0

是的。它将包含您上面提到 ROLLBACK的所有内容。Store Procedure

更多关于回滚交易

于 2013-03-05T17:55:36.887 回答