Можно ли откатить транзакцию после ее подтверждения и закрытия соединения? - PullRequest
2 голосов
/ 21 июня 2010

Можно ли откатить транзакцию после ее подтверждения и закрытия соединения?

    finally
    {
        // Commit the transaction.
        sqlTran.Commit();

        reader.Close();
        reader.Dispose();

        conn.Close();
        conn.Dispose();
    }

Я бы хотел предоставить пользователю опцию Opps! откат . Так что, если он зафиксирован, можно ли его откатить?

Ответы [ 4 ]

5 голосов
/ 21 июня 2010

Подтвержденная транзакция никогда не может быть отменена, если вы хотите, чтобы она была постоянной после фиксации.

Вы ищете точки сохранения ?

3 голосов
/ 21 июня 2010

Хорошо, если оно совершено, оно совершено.Нет отката назад.Если вы хотите быть невежливым для пользователя, установите таймер и зафиксируйте его только после задержки, предоставив пользователю возможность откатиться на некоторое время.

2 голосов
/ 21 июня 2010

просто нет. Вы не можете:)

Метод Commit эквивалентен оператору Transact-SQL COMMIT TRANSACTION. Невозможно откатить транзакцию после того, как она была зафиксирована, поскольку все модификации стали постоянной частью базы данных.

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.commit.aspx

0 голосов
/ 21 июня 2010

Если вы поставите свой «упс!» в нужном месте вы сможете делать то, что вам нужно.

Кроме того, взгляните на вложенные транзакции , возможно, это подойдет вашему сценарию еще лучше.

Наконец, как указывает Тобиас, есть точек сохранения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...