SQL事务控制语言(TCL)
1、什么是事務?
事務(Transaction)是由一系列相關的SQL語句組成的最小邏輯工作單元,在程序更新數(shù)據(jù)庫時事務事關重要,因為必須維護數(shù)據(jù)的完整性。事務由數(shù)據(jù)操作語言完成,是對數(shù)據(jù)庫所做的一個或多個修改。
用網(wǎng)上的例子來說明
如果我們要修改表中的某條記錄,可以用以下方法:
首先刪除原記錄,然后插入修改后的新記錄。
這個過程中有2步:如果出現(xiàn)記錄刪除成功,但插入的時候因為某種原因?qū)е率〉脑?#xff0c;就會出現(xiàn)數(shù)據(jù)丟失。
這個時候,就可以用事務來處理,把刪除和插入當成是一件事,必須是2步都成功,數(shù)據(jù)才發(fā)生改變。
否則若是出現(xiàn)刪除成功,而插入失敗的情況,希望將自動回滾,恢復為原始狀態(tài)。
事務的特征:
所有的事務都有開始和結(jié)束;
事務可以被保存或撤銷;
如果事務在中途失敗,事務中的任何部分都不會被記錄到數(shù)據(jù)庫。
2、事務控制是指對關系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)里可能發(fā)生的各種事務的管理能力。
當一個事務執(zhí)行并完成修改時,并不是對目標表立即進行修改,此時修改的結(jié)果只是保存到臨時緩存中,只有利用事務控制命令才最終認可這個事務。
控制事務的命令有3個:
COMMIT;
ROLLBACK;
SAVEPOINT.
UPDATE
INSERT
DELETE
2.1 COMMIT命令
COMMIT 命令用于把事務所做的修改保存到數(shù)據(jù)庫,表面該事務對數(shù)據(jù)庫所做的操作將永久記錄到數(shù)據(jù)庫。
如:刪除表里所有價格低于$14的產(chǎn)品
DELETE FROM PRODUCT_TMP WHERE cost < 14;
使用COMMIT語句把修改保存到數(shù)據(jù)庫,完成這個事務
COMMIT;
2.2 ROLLBACK 命令
ROLLBACK 命令用于撤銷還沒有被保存到(未提交的事務)數(shù)據(jù)庫的命令,它只能用于撤銷上一個COMMIT或ROLLBACK命令之后的事務。
2.3 SAVEPOINT命令
保存點是事務過程中的一個邏輯點,我們可以把事務回退到這個點,而不必回退整個事務。
SAVEPOINT savepoint_name; # 在事務語句中間創(chuàng)建一個保存點。
2.4 ROLLBACK TO SAVEPOINT命令
回退到保存點的命令:
ROLLBACK TO SAVEPOINT_NAME;
RELEASE SAVEPOINT 命令用于刪除創(chuàng)建的保存點,在某個保存點被釋放之后,就不能再利用ROLLBACK命令來撤銷這個保存點之后的事務操作了。
例:對scott.emp表綜合使用COMMIT、ROLLBACK和SAVEPOINT示例。
(1)更新scott.emp表中的sal字段,然后執(zhí)行ROLLBACK操作。
UPDATE scott.emp SET sal=sal*2;
已更新。
ROLLBACK;
回退已完成。(表示UPDATE語句并沒有執(zhí)行)
(2)更新scott.emp表中的sal字段,然后執(zhí)行COMMIT操作。
UPDATE scott.emp SET sal=sal*2;
已更新。
COMMIT;
提交完成。 (表示UPDATE真正提交到數(shù)據(jù)庫)
(3)向表中插入員工編號為1111的記錄,設置一個保存點,然后用UPDATE命令將該記錄的員工姓名修改為李明,然后用ROLLBACK命令回滾到保存點。
INSERT INTO scott.emp(empno) VALUES (1111);
已插入一行。
SAVEPOINT p1; #設置保存點p1
UPDATE scott.emp SET ename=”李明” WHERE empno=1111;
ROLLBACK TO p1;
回退已完成。
2.5 事務控制與數(shù)據(jù)庫性能
當出現(xiàn)COMMIT命令時,回退事務信息被寫入到目標表里,臨時存儲區(qū)域里的回退信息被清除;
當出現(xiàn)ROLLBACK命令時,修改不會作用于數(shù)據(jù)庫,而臨時存儲區(qū)域里的回退信息被清除;
如果一直沒有出現(xiàn)COMMIT 或 ROLLBACK 命令,臨時存儲區(qū)域里的回退信息就會不斷增長,直至沒有剩余空間,導致數(shù)據(jù)庫停止全部進程,直至空間被釋放。
總結(jié)
以上是生活随笔為你收集整理的SQL事务控制语言(TCL)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五、华为鸿蒙HarmonyOS应用开发之
- 下一篇: 第二章关系数据库