07 TCL 事務控制語言

2021-10-05 07:58:38 字數 1898 閱讀 2577

定義:乙個事務是乙個完整的業務邏輯單元,不可再分。

例如:銀行轉賬,從a賬戶向b賬戶轉賬1000,需要執行兩條update語句:

update t_act set balance=balance+

1000

where actno=

'act_001'

;update t_act set balance=balance+

1000

where actno=

'act_002'

;

為了保證上面的dml語句同時成功或失敗我們需要使用資料庫的「事務機制」。

與事務有關的語句只有:dml語句(insert update delete)

事務的存在是為了保證資料的完整性,安全性。

開啟事務機制(開始)

執行多條 dml 語句

提交事務或者事務回滾

注意:示例:

/*在mysql資料中開啟了自動提交機制,需要關閉自動提交*/

start

transaction

;/*執行多條dml語句*/

insert

into t_stu values

(1001

,'zs1'

,101);

insert

into t_stu values

(1002

,'zs2'

,102);

insert

into t_stu values

(1003

,'zs2'

,102);

insert

into t_stu values

(1004

,'zs3'

,101);

select

*from t_stu;

/*最後提交事務關閉*/

commit

;

事務包括四大特性:acid

a:原子性:事務是最小的工作單元,不可再分

c:一致性:事務必須保證多條dml語句同時成功或者同時失敗

i:隔離性:事務a與事務b之間具有隔離

d:永續性:最終資料必須持久化到硬碟檔案中,事務才算成功的結束

事務的隔離性存在隔離級別,理論上隔離級別包括4個:

第一級別:讀未提交(read uncommitted)

第二級別:讀已提交(read committed)

第**別:可重複度(repeatable read)

第四級別:序列化讀/序列化讀(serializable)

注意:進入指定資料庫,使用命令:use [資料庫名稱]修改事務隔離級別,使用命令:set global transaction isolation level [隔離級別型別]

/*設定第一級別*/

setglobal

transaction

isolation

level

read

uncommitted

;/*設定第二級別*/

setglobal

transaction

isolation

level

read

committed

;/*設定第**別*/

setglobal

transaction

isolation

level

repeatable

read

;/*設定第四級別*/

setglobal

transaction

isolation

level

serializable

;

事務控制語言 TCL

概念 乙個或一組sql語句組成的執行單元,執行單元所有sql語句要麼全執行,要麼全不執行。栗子 張三給李四轉賬。張三 賬戶1000元。李四 賬戶1000元。update 表 set 張三賬戶 500 where name 張三 資料庫中途異常.update 表 set 李四賬戶 1500 where...

MySQL 事務控制語句 TCL

乙個或者一組 sql 語句組成乙個執行單元,這個執行單元要麼全部執行,要麼全部都不執行,在這個單元中每個 sql 語句都是相互依賴的。整個單元作為乙個不可分割的整體,如果單元中的某條 sql 語句一旦執行失敗或者產生錯誤,整個單元將會回滾。所有受影響的資料將返回到事務開始前的狀態,如果單元中的所有 ...

事務處理語言(TCL)

指作為單個邏輯工作單元執行的一條或多條sql操作,要麼完全的執行,要麼完全的不執行。原子性 atomicity 事務的多條sql語句是乙個不可分割的完整的邏輯單元,要麼全做,要麼都不做。一致性 consistency 事務執行前後資料的完整性保持一致。隔離性 isolation 乙個事務執行的過程中...