1 5 (SQL學習筆記)事務處理

2022-05-23 19:12:12 字數 2320 閱讀 4717

一、事務

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...