В некоторых случаях я видел использование транзакций, но никогда не понимал, в каких ситуациях они должны использоваться. Как и когда транзакции должны использоваться (начать транзакцию)? Я прочитал, что Microsoft не предлагает использовать операторы транзакций (фиксация, откат) внутри триггера и хранимую процедуру.Как использовать транзакции (начать транзакцию, совершить транзакцию)?
ответ
Сделки могут использоваться в сочетании с обработкой ошибок в хранимых процедурах или сценариях SQL при вставке или обработке данных, чтобы убедиться, что все согласовано.
Например, если у вас есть хранимая процедура, которая вставляет записи в родительскую таблицу и дочернюю таблицу, вы должны убедиться, что родительская запись сначала вставлена; если это не удается, вы можете отменить изменения, чтобы у вас не было осиротевшей дочерней записи.
Erland Sommarskog имеет great article о том, как использовать обработку ошибок в SQL Server.
И наконец, где Microsoft предложила не использовать транзакции в хранимых процедурах? Я бы подумал, что хранимые процедуры будут идеальным местом для их использования.
Если я переходила МД с одного счета на другой, я бы хотел, чтобы это было 100% успех или 100% провал:
UPDATE PersonalAccount SET Balance = Balance - 100 WHERE Username = 'gbn'
--what if the server caught fire here?
UPDATE SavingsAccount SET Balance = Balance + 100 WHERE Username = 'gbn'
Что касается того, что вы читаете, полный мусор, за исключением без необходимости использования НАЧАТЬ TRAN в триггере.
Пример из «Nested stored procedures containing TRY CATCH ROLLBACK pattern?»
- 1. начать транзакцию и совершить транзакцию в MS SQL
- 2. Начать и совершить транзакцию в перехватчике
- 3. Spring - совершить транзакцию JMS после транзакции JPA
- 4. Как вручную совершить управляемую транзакцию
- 5. opensessioninview и совершить транзакцию
- 6. Необходимо совершить открытую транзакцию?
- 7. Горячий, чтобы начать, откат, совершить транзакцию в xcode с sqlite
- 8. ExecuteNonQueryAsync и совершить транзакцию SQL
- 9. SQL Откат транзакции не начать транзакцию
- 10. Как начать транзакцию в JDBC?
- 11. Как совершить отдельную транзакцию в Oracle PLSQL
- 12. Как совершить транзакцию и выполнить транзакцию на сервере sql?
- 13. Как совершить первую транзакцию после второй транзакции в asp.net
- 14. Как совершить призрачную транзакцию в Postgresql 9.3?
- 15. как совершить и начать новую транзакцию в рамках одного запроса?
- 16. TransactionFailureException: Не удалось совершить транзакцию
- 17. Может ли сделка совершить транзакцию в PostgreSQL?
- 18. Совершить транзакцию immideatly после метод закончили
- 19. Вы не можете совершить транзакцию во время управляемой транзакции
- 20. SQL начать транзакцию без фиксации
- 21. Как снять транзакцию с каждой транзакции PayPal?
- 22. DoCmd.RunSQL Использовать транзакцию?
- 23. SQLITE (интерфейс C/C++) - Как совершить транзакцию
- 24. Как начать транзакцию в другом потоке?
- 25. В чем разница между начать транзакцию против начать работу
- 26. Тип транзакции Hyperledger: Создать транзакцию
- 27. Как проверяет транзакцию на транзакцию цепочки
- 28. Как использовать транзакцию DatastoreIO
- 29. Начать транзакцию вокруг пружинной RepositoryEntityController
- 30. Возможно ли совершить транзакцию в событии BeforeTransportMessage
Спасибо, может быть, мое заявление о слишком прямо: есть предупреждение, что с помощью фиксации или отката внутри процедуры или триггера может привести к ошибкам: http://msdn.microsoft.com /en-us/library/ms187844(v=SQL.100).aspx – juur