我們在做開發的時候,會碰到一種情況,要同時更新兩張數據表。
兩張表都的更新成功,不然數據會出錯。
咱們來模拟一個場景。
在電商環境中,發生退貨的請況。
這就涉及到最少兩張表的更新。
首先,在銷售表中更新退貨操作。
update SaleList set ReturnBack=1 where OrderNo='201801010001'
然後,在庫存表中将該商品數量 1。
update StoreList set ProductNum=ProductNum 1 where PID=369
在執行這兩條sql語句的時候,如果第一條出錯,那還好解決,這兩條SQL語句都不會成功執行。
但,要命的是,因為某種原因,造成是第二條出錯。那麼第一條語句會執行成功,也就是說,客戶已經退貨,但是庫存裡沒有相應的增加。
這樣,就造成了數據的不安全。
為了避免這樣的情況發生,我們就用到了SQL事務。
其實很簡單,隻要按照下面的格式寫就成。
on error resume next'這句隻要知道,即便是有錯誤,也會繼續執行。
CONN.BeginTrans'打開一個SQL事務。
CONN.Execute("update SaleList set ReturnBack=1 where OrderNo='201801010001'")'執行第一條SQL語句
CONN.Execute("update StoreList set ProductNum=ProductNum 1 where PID=369")'執行第二條SQL語句
If err <> 0 Then
'這裡給用戶返回錯誤消息
CONN.RollBackTrans
Else
'這裡給客戶返回成功消息
CONN.CommitTrans
End If
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!