Management Studio 2005: будет ли отмена оператора вызывать откат?

StackOverflow https://stackoverflow.com/questions/1427764

Вопрос

Несколько минут назад, работая над новым sproc, я выполнил неверный оператор удаления. Примерно так:

Delete From SomeTable Where SomeStatusID=1

Через 10 секунд я понял, что набрал неправильный статус и нажал "Отмена". Там сказано, что заявление было отменено.

Я восстановил отдельную базу данных, чтобы вернуть таблицу, которую я предположительно обнажил, полагая, что, поскольку это не было в транзакции, некоторые записи, вероятно, были удалены.

Как ни странно, все записи были целы. Просто интересно, почему это так - рассматривал ли он отдельный оператор удаления как транзакцию в этом случае, даже если не была определена явная транзакция?

Это было полезно?

Решение

По умолчанию один оператор DML выполняется как транзакция. Если инструкция выполнена успешно, транзакция фиксируется. Если оператор отменен или иным образом не выполнен, транзакция откатывается.

Это поведение встроено в движок и не связано с управлением студией. См. Автоматическое принятие транзакций в документации.

Другие советы

Есть всегда транзакции. Единственное, что меняется, это то, как эти транзакции изолированы друг от друга, и что в среде управления транзакция не может быть определена явно и автоматически фиксируется после завершения запроса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top