回滾我在下面的代碼下面插入語句故意引發SqlException
和ModifiedB
SQL事務並不在vb.net
0
A
回答
2
更換正確的列名ModifiedBy
你需要用整個SQL代碼在一個事務。就拿這個例子:
create table errTest
(
intVal int
)
insert into errTest select 1
insert into errTest select 1/0
select * from errTest --one record
第二個插入失敗,但因爲沒有交易被明確啓動,每個刀片本身就是它自己的事務。第一個成功,第二個失敗,表最終保留成功的插入。
如果所有刀片被包裝在一個事務,如果xact_abort
上,然後通過任何插入拋出的任何錯誤都將導致整個事務回滾:
create table errTest
(
intVal int
)
set xact_abort on
begin transaction
insert into errTest select 1
insert into errTest select 1/0
commit transaction
select * from errTest --zero records
0
您需要您的交易和連接傳遞給你想在一個SQL事務中使用所有的命令,這是我的例子(我剪一些東西出來使用記事本,因此可能會給工作室的錯誤)
Private Sub main()
Using sql_conn
sql_conn.Open()
Dim SQL_transaction_INPUT As SqlClient.SqlTransaction = sql_conn.BeginTransaction
Try
Dim isOK as Boolean = False
isOK = update_BSE(myID, sql_conn, SQL_transaction_INPUT)
If isOK Then
SQL_transaction_INPUT.Commit()
sql_conn.Close()
Else
SQL_transaction_INPUT.Rollback()
sql_conn.Close()
End If
Catch ex As Exception
SQL_transaction_INPUT.Rollback()
If sql_conn.State = ConnectionState.Open Then sql_conn.Close()
End Try
End Using
End Sub
Private Function update_BSE(ByVal _IDmod As Integer, _
ByVal conn_with_trans As SqlConnection, _
ByVal conn_transaction As SqlTransaction) As Boolean
Dim ins As String = "UPDATE something WHERE IDrec = @IDmod"
Dim cmdINS As New SqlCommand(ins, conn_with_trans, conn_transaction)
Try
With cmdINS.Parameters
.Add("IDmod", SqlDbType.Int).Value = _IDmod
End With
cmdINS.ExecuteNonQuery()
Return True
Catch ex As Exception
Return False
End Try
End Function
相關問題
- 1. SQL事務多類vb.net
- 2. VB.NET - 事務回滾
- 3. ExecuteNonQueryAsync並在SQL事務中提交
- 4. 從vb.net向不同的SQL Server插入數據的事務
- 5. 在MS SQL中開始事務並提交事務
- 6. SQL服務器併發事務問題
- 7. 並行事務在NHibernate/SQL Server中的不同會話
- 8. VB.NET事務和SqlDataReader的
- 9. SQL事務不回滾
- 10. 刪除SQL事務不工作在JavaScript
- 11. SQL - 中止併發事務的原因
- 12. SQL Server插入鎖與併發事務
- 13. SQL事務回滾並提交
- 14. Golang併發SQL事務處理
- 15. SQL Server事務
- 16. SQL事務
- 17. Keepalive sql事務
- 18. sql事務和vb.net中的雙表插入
- 19. vb.net中的事務計數異常(SQL例外)
- 20. 在sql中記錄事務
- 21. 鎖在SQL Server跨事務
- 22. 並行事務
- 23. 事務併發
- 24. SQL Server服務器在vb.net中不同的關鍵字
- 25. ADO.NET事務和SQL Server 2008事務
- 26. WCF事務中SQL事務的影響
- 27. SQL服務器事務
- 28. VB.NET構建事件不存在
- 29. ajaxFileUpload在GridView不調用VB.NET事件
- 30. SQL事務超時
像你實際使用它看起來並不交易。你開始的時候,但是當你調用你的非查詢函數時,我不會看到命令被添加到事務中的位置,而不是僅僅被執行,這就解釋了爲什麼回滾沒有撤銷任何東西。 – helrich
您的意思是說,事務和非查詢命令使用相同的連接?每個非Query方法在本地變量中打開連接,然後在單獨的類中執行該命令之後立即關閉它們。你可以發佈一些代碼,以確切地突出你在評論中提出的建議......謝謝.... – User1