Management Studio 2005: будет ли отмена оператора вызывать откат? - PullRequest
1 голос
/ 15 сентября 2009

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

Delete From SomeTable Where SomeStatusID=1

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

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

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

Ответы [ 2 ]

3 голосов
/ 15 сентября 2009

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

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

2 голосов
/ 15 сентября 2009

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

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