ASP開發——開啟SQL事務

ASP開發——開啟SQL事務

我們在做開發的時候,會碰到一種情況,要同時更新兩張數據表。

兩張表都的更新成功,不然數據會出錯。

咱們來模擬一個場景。

在電商環境中,發生退貨的請況。

這就涉及到最少兩張表的更新。

首先,在銷售表中更新退貨操作。

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


分享到:


相關文章: