Я работаю с приложением, которое подключается к базе данных.Я определенно хочу сделать откат, если некоторые операции с базой данных потерпели неудачу.Мне просто интересно, какую транзакцию + try-catch лучше использовать, SQL или VB.NET?
В VB.NET мы можем сделать что-то вроде:
Try
...
Catch ex As Exception
MyTransaction.Rollback
End Try
Если try catch находится в SQL:
...
MyCommand.CommandText = _
"USE AdventureWorks2008R2; " & _
"GO " & _
"BEGIN TRANSACTION; " & _
"BEGIN TRY " & _
" ... " & _
"END TRY " & _
"BEGIN CATCH " & _
" SELECT " & _
" ERROR_NUMBER() AS ErrorNumber " & _
" ,ERROR_SEVERITY() AS ErrorSeverity " & _
" ,ERROR_STATE() AS ErrorState " & _
" ,ERROR_PROCEDURE() AS ErrorProcedure " & _
" ,ERROR_LINE() AS ErrorLine " & _
" ,ERROR_MESSAGE() AS ErrorMessage; " & _
" IF @@TRANCOUNT > 0 " & _
" ROLLBACK TRANSACTION; " & _
"END CATCH; " & _
"IF @@TRANCOUNT > 0 " & _
" COMMIT TRANSACTION; " & _
"GO " & _
MyCommand.ExecuteNonQuery()
, я всегда использую первый, через VB.NET.Есть ли разница?Что это?Есть ли недостатки?