事务的概述
1.基本概念
- 將一條或者多條SQL看成一個整體,要么同時執行成功要么同時執行失敗,這就是事務。
事務舉例:
張三給李四轉賬500元錢,需要讓三賬戶的余額-500,李四的賬戶余額+500,轉賬是一個連續的過程,要么同時成功,要么同時失敗。不能出現張三轉出了500塊,而李四沒收到的情況,這將是很嚴重的問題。
2.事務的基本使用
執行SQL語句之前開啟事務,執行后沒異常就提交,有異常就回滾
<1>開啟事務:在執行一組sQL操作之前開始事務,start transaction;
提交了之后是不是不能回滾
<2>提交事務:在一組sQL執行成功之后提交事務,commit;
如果開啟事務不提交,那么默認就是回滾【斷開連接】
<3>回滾事務:在一組SQL執行出現異常之后回滾事務,rollback;
舉例【執行后,發現查詢結果出錯則回滾,正確則提交】:
-- 張三給李四轉賬500元-- 開啟事務 START TRANSACTION;-- 1.張三賬戶-500 UPDATE account SET money=money-500 WHERE NAME='張三';出錯了...-- 2.李四賬戶+500 UPDATE account SET money=money+500 WHERE NAME='李四';-- 回滾事務 ROLLBACK;-- 提交事務 COMMIT;補充–try里面使用commit提交事務,catch里面使用rollback回滾事務
3.事務的提交方式
1代表自動提交 0代表手動提交[COMMIT;]
- 查詢事務提交方式:SELECT @@AUTOCOMMIT;
- 修改事務提交方式:SET @@AUTOCOMMIT=數字;
4.事務的四大特征(ACID)
<1> 原子性(Atomicity)
原子性是指事務包含的所有操作要么全部成功,要么全部失敗回滾。
因此事務的操作如果成功就必須要完全應用到數據庫,如果操作失敗則不能對數據庫有任何影響。
<2> 一致性(Consistency)
一致性是指事務必須使數據庫從一個一致性狀態變換到另一個一致性狀態。
也就是說一個事務執行之前和執行之后都必須處于一致性狀態。
<3> 隔離性(isolcation)
隔離性是當多個用戶并發訪問數據庫時,比如操作同一張表時,數據庫為每一個用戶開啟的事務。
不能被其他事務的操作所干擾,多個并發事務之間要相互隔離。
<4> 持久性(durability)
持久性是指一個事務一旦被提交了,那么對數據庫中的數據的改變就是永久性的。
即便是在數據庫系統遇到故障的情況下也不會丟失提交事務的操作。
5.事務的隔離級別
- 多個事務之間是隔離的,相互獨立的。但是如果多個事務操作同一批數據,則會引發一些問題,設置不同的隔離級別就可以解決這些問題。
- 產生條件是要在兩個新連接中操作【如兩臺電腦,獲取一臺電腦連接數據庫兩次】,不是一個連接中的兩個查詢窗口。
<1>設置隔離級別
可重復讀:兩次讀取的數據一樣
不可重復讀:兩次讀取的數據不一樣【問題:多人操作時所看到的數據有差異】
<2>存在的問題
<3>查詢隔離級別以及設置隔離級別
-
數據庫查詢隔離級別:
select @@tx_isolation;
-
數據庫設置隔離級別(修改后需要重新連接):
set global transaction isolation level 級別字符串;
總結
- 上一篇: 数据表触发器
- 下一篇: 无线网密码修改步骤(无线网密码修改教程)