TCL
transaction 事務 -- DML
定義為把一連串的操作作為單個邏輯工作單元處理
----- 例如:銀行轉賬
事務特性 ACID
原子性 atomicity 所有的數據修改 要么一起執行 要么不執行
一致性 congsistency 所有的數據修改同時得到反應
隔離性 isolation 另一個事務需要在此事務結束之后才能執行
持久性 durability 數據變動是永久的
使用事務的優點:
他們保證了數據的一致性
使用事務使得數據修改更為靈活而且修改過程是可控的
即使在用戶處理失敗或者系統發生故障時數據仍然是安全的
事務保證DML(數據操縱語言)語句對於數據的所作的變動是一致的
隱式事務 DDL
顯式事務 DCL - commit
commit 語句完成顯式事務,並且使得所有的修改是永久有效的
rollback 語句終止當前事務,使得數據庫返回到以前的狀態
實例:
select * from student;
update student set sex = '人' where stuNo = '00011';
commit;
rollback; -- 回滾至上一commit之后
show autocommit; -- 默認off
set autoCommit on;
set autoCommit off;
create table AA(
AA char(10)
); -- 隱式commit
select * from bankcount;
-- 多條語句 事務
update bankcount set money = money - 10000 where countno = '110 000 2000 888';
update bankcount set money = money + 10000 where countno = '110 000 2000 889';
rollback;
commit;
-- rollback 定義保存點 savePoint;
SAVEPOINT aa;
update bankcount set money = money + 10000 where countno = '110 000 2000 888';
SAVEPOINT bb;
update bankcount set money = money - 10000 where countno = '110 000 2000 889';
rollback to bb; -- 回滾之保存點之后
commit;
在下列情況下,數據修改自動被回滾:
1. 系統崩潰或發生故障.
2. SQL*Plus 意外終止.
隔離性:
上鎖防止多個用戶同時修改數據.
上鎖可以是隱式或顯式的.
上鎖的一些基本內容:
上鎖可預防並發事務之間的破壞性的交互.
上鎖是自動施行的,無須用戶干預.
上鎖把操作限制到可能的最小粒度.
只有在事務結束后,上鎖才被解除.
DML行數據排它鎖
事務排它鎖