3

ROLLBACK TRANSPのすべてをロールバックしますか?(別の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 に答える