2016-12-04 3 views
0
SELECT * 
FROM [Production].[Product] 

BEGIN TRY 
    BEGIN TRAN; 
     UPDATE [Production].[Product] 
     SET Color = 'Off White' 

     SELECT * 
     FROM [Production].[Product] 

     SELECT @@TRANCOUNT AS 'Transaction Count' 

    COMMIT TRAN; 
END TRY 
BEGIN CATCH 
    ROLLBACK TRAN; 
END CATCH; 

SELECT *, @@TRANCOUNT AS 'Transaction Count' 
FROM [Production].[Product] 

У меня нет ошибок, но изменения не откат, как будто они должны ... мыслить?Не удается получить транзакцию SQL Server 2012 для отката

+0

Поскольку он находится в блоке TRY, он должен откатываться только в случае неудачи TRY. Если у вас нет ошибок, ожидаемый результат будет заключаться в том, что TRAN не откат. Запустили ли вы этот запрос без TRY/CATCH? –

+0

SELECT * ОТ [Производство]. [Продукт] \t BEGIN TRAN; \t \t UPDATE [Производство]. [Product] \t \t SET Color = 'Кремовый' \t \t SELECT * \t \t FROM [производства]. [Product] \t \t SELECT @@ TRANCOUNT AS 'транзакции графа' \t COMMIT TRAN; \t ROLLBACK TRAN; SELECT *, @@ TRANCOUNT AS 'Количество транзакций' FROM [производства]. [Product]» –

+0

Изменений еще не откатываются –

ответ

0
SELECT * 
FROM [Production].[Product] 

BEGIN TRAN; 
SAVE TRAN Product1; 
    UPDATE [Production].[Product] 
    SET Color = 'Off White' 
    SELECT * 
    FROM [Production].[Product] 
    SELECT @@TRANCOUNT AS 'Transaction Count' 
    ROLLBACK TRAN Product1; 
COMMIT TRAN; 




SELECT * 
FROM [Production].[Product] 
SELECT @@TRANCOUNT AS 'Transaction Count' 

Это работает, как мне нужно, чтобы он, думал, что я хотел бы поделиться богатством ~

Edit 1: Забыла включить важные изменения в коде, я только человек!