Ajit Kumar Pandit Ответов: 2

Почему мы используем оператор rollback при написании хранимой процедуры в MS SQL server?


Не могли бы вы кто-нибудь объяснить оператор Rollback в хранимой процедуре в MS SQL Server? Что произойдет, если мы не будем использовать это утверждение? И каковы преимущества его использования?
Спасибо.

Что я уже пробовал:

Я пытаюсь обсудить это со старшим разработчиком и другими онлайн-ресурсами.

Karthik_Mahalingam

прочтите эти 2
https://msdn.microsoft.com/en-us/library/ms181299.aspx
https://msdn.microsoft.com/en-us/library/ms188929.aspx

Ajit Kumar Pandit

Спасибо, Картик.

Karthik_Mahalingam

Привет Аджит,
в будущем
Всегда использовать  Ответить  кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

Ajit Kumar Pandit

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

Karthik_Mahalingam

круто, он будет активен при наведении :)

Ajit Kumar Pandit

Да, я это видел. Спасибо.

Karthik_Mahalingam

добро пожаловать

2 Ответов

Рейтинг:
16

OriginalGriff

Откат - это часть транзакций, и он используется для того, чтобы "выбросить" все изменения в БД с момента последнего оператора BEGIN TRANS. От начала транзакции до отката или фиксации изменения не поступают непосредственно в" живую "БД, а сохраняются как" ожидающие " на более поздний срок.

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


Ajit Kumar Pandit

Большое спасибо, сэр.

OriginalGriff

Пожалуйста!

Рейтинг:
11

Andy Lanng

Откат обычно происходит в блоке if(error).

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

Если откат не находится в блоке if (error), то я догадываться что автор может изменить некоторые данные, получить их и позволить им откатиться назад, но это было бы очень плохой практикой


Ajit Kumar Pandit

Я получил свои очки после прочтения всех вышеприведенных объяснений. Спасибо, Энди Ланг.

Andy Lanng

НП-похоже, Грифф появился всего за несколько секунд до меня, ... снова >_ & lt;

Ajit Kumar Pandit

Я доволен тем объяснением, которое дали вы оба.

Andy Lanng

ах, не беспокойтесь. Это просто шутка между Гриффом и мной. Я публикую 0.0001% так же часто, как Грифф, поэтому я дразню его за то, что он публикует меня, что неизбежно ^_^

Ajit Kumar Pandit

Хахаха... Хорошая шутка. Мне нравятся такие виды общения.