一、事務
1.1事務概念
事務處理可以用來維護資料庫系統資料的完整性,它保證一組sql語句要麼全部都執行,
要麼全部都不執行。(例如一批sql語句,只要有乙個執行失敗就全部不執行,即回到失敗前的狀態
只有全部成功才會執行)。
例如a向b轉賬500塊錢,先從a賬戶中扣除500,然後再再b賬戶中加500.
執行更新語句時,將a賬戶錢扣除500了,然後先b賬戶新增500的語句出錯,即沒收到錢。
此時a的錢被扣除了,b也沒收到錢。這樣顯然是不行的,必須保證既然扣了錢就一定要轉到,
或者沒有轉到就不要扣錢。
事務可以保證這樣一組操作的穩定,使一組操作當成乙個整體,使其具有原子性。
1.2執行事務
事務開始:begin;
語句1語句2
commit
begin用於指定事務開始,commit用於手動提交事務。
之前寫的sql語句都是隱式的提交,即資料庫管理軟體自動的幫我們提交了。
但事務不會隱式的提交,所以需要我們手動提交。
我們先來看乙個沒加事務的例子:
現在hcf向zrx轉賬500,hcf的balance就變了500,zrx的balance就變成了2000;
因為語句中有ss,所以發生了錯誤,我們來看下表中資料。
執行了第乙個更新語句,之後遇到了錯誤停止執行。
出現了錢扣了但是沒有轉到對方賬戶的情況。
這種情況顯然是不允許發生的。
接下來我們為其新增事務。
再次執行語句也會出現錯誤,我們來看下表中資料。
這次雖然轉賬失敗了,但是hcf的錢並沒有被扣除。
這次是才是我們期望的情況,希望扣錢和到賬儲存一致性,同時成功或者同時失敗。
1.3rollback
rollback用於對事務進行回滾,
1.3.1 rollback是針對事務的,你如果沒有在執行語句之前開啟事務,那麼無法rollbac
1.3.2 rollback 回滾的意思。 就是資料庫裡做修改後 ( update ,insert , delete)未commit 之前 使用rollback 可以恢復資料到修改之前。
在開啟事務,且沒有commit的前提下使資料恢復到修改之前(即回到這個事務開始前的狀態)。
乙個commit或rollback都代表乙個事務結束,例如事務已經commit了,該事務就結束了,
則無法針對該事務使用roolback。commit,rollback都是針對事務而言的。
可以看到由於rollback導致回到事務執行前,所有兩條語句都未執行。
1.4保留點
使用rollback時直接返回事務開始狀態,但有時可能某些操作是有用的,
這時我們就可以在事務中設定保留點,回滾時可以回滾到指定的保留點。
保留點之前的語句儲存執行,保留點之後的語句不執行。
第一條語句執行了,而第二條語句沒有執行。
sql事務處理語言
事務 也稱為工作單元,是由乙個或多個sql語句組成的操作序列,這些sql語句作為乙個完整的工作單元,要麼全部執行成功,要麼全部執行失敗。這樣能保證資料的一致性。事務處理語言 transaction process language 簡稱tpl,主要用來對組成事務的dml語句的操作結果進行確認或取消。...
delphi 事務處理SQL語句
方法一 利用adoconnection.exe sqlstate adoconnection1.begintrans 開始事務 tryadoconnection1.execute sqlstr1 adoconnection1.execute sqlstr2 adoconnection1.execut...
delphi 事務處理SQL語句
方法一 利用adoconnection.exe sqlstate adoconnection1.begintrans 開始事務 tryadoconnection1.execute sqlstr1 adoconnection1.execute sqlstr2 adoconnection1.execut...