会ROLLBACK TRAN
回滚我的 SP 中的所有内容吗?(包括对另一个 SP 的调用)
例子:
BEGIN TRAN
INSERT INTO (table1)
VALUES (1,'abc')
EXEC InsertTable2
INSERT INTO (table3)
VALUES (1,'abc')
ROLLBACK TRAN
会ROLLBACK TRAN
回滚我的 SP 中的所有内容吗?(包括对另一个 SP 的调用)
例子:
BEGIN TRAN
INSERT INTO (table1)
VALUES (1,'abc')
EXEC InsertTable2
INSERT INTO (table3)
VALUES (1,'abc')
ROLLBACK TRAN
来自 msdn
将显式或隐式事务回滚到事务的开头,或事务内的保存点。您可以使用 ROLLBACK TRANSACTION 擦除从事务开始或保存点所做的所有数据修改。它还释放事务持有的资源。
所以是的
在不知道不可能的定义的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
但假设一个理智的定义,答案是“是”
是的。它将包含您上面提到 ROLLBACK
的所有内容。Store Procedure
更多关于回滚交易