定義:乙個事務是乙個完整的業務邏輯單元,不可再分。
例如:銀行轉賬,從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 乙個事務執行的過程中...