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