91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中事務控制對的示例分析

發布時間:2021-04-07 11:24:41 來源:億速云 閱讀:138 作者:小新 欄目:MySQL數據庫

這篇文章主要介紹MySQL中事務控制對的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

什么是事務控制

事務是指作為一個邏輯工作單元執行的一系列操作,這些操作要么全部成功要么全部失敗。事務確保了多個數據的修改作為一個單元來處理。

  • 在MySQL中,只有使用了Innodb存儲引擎的數據庫或表才支持事物

  • 事務用于維護數據庫的完整性,保證成批的sql語句要么都執行,要么都不執行

  • 事務用于管理INSERTUPDATEDELETE語句

假如,張三在ATM機上給李四轉賬100元,在銀行的業務系統中,主要會執行兩步數據變更操作:

  1. 從張三的賬戶減去100元

  2. 給李四的賬戶增加100元

試問,如果操作1執行成功,操作2執行失敗會發生什么?

事務的四個特性

如果某個數據庫支持事務,那么該數據庫必須具備ACID四個特性,即Atomicity(原子性)、Consistency(一致性)、Isolation(隔離性)、Durability(持久性)。

  • 原子性:事務必須是原子工作單元,事務中包含的各操作要么都做,要么都不做

  • 一致性:事務在執行完成時,必須使所有的數據都保持一致狀態

  • 隔離性:事務獨立運行。多個事務之間相互隔離,互不干擾。事務的100%隔離,會犧牲速度

  • 持續性:事務執行完成之后,它對系統的影響是永久性的

MySQL的事務控制

默認情況下,MySQL是自動提交事務的,即每一條INSERT、UPDATE、DELETE的SQL語句提交后會立即執行COMMIT操作。因此,要開啟一個事務,可以使用start transactionbegin,或者將autocommit的值設置為0.

  • 方法一:MySQL中事務控制對的示例分析

  • 方法二:MySQL中事務控制對的示例分析

例子

  1. 登陸數據庫,使用student數據庫并查看所有的數據表

USE student;SHOW TABLES;

MySQL中事務控制對的示例分析
2. 創建bank_account數據表并插入兩條記錄,設置張三的balance字段值+1000

CREATE TABLE bank_account(
	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(30) COMMENT '姓名',
	balance DECIMAL(18, 2) COMMENT '賬戶余額');INSERT INTO bank_account(id, name, balance) VALUE(1, '張三', 0);INSERT INTO bank_account(id, name, balance) VALUE(2, '李四', 0);UPDATE bank_account SET balance = balance + 1000 WHERE id = 1;

MySQL中事務控制對的示例分析
3. 查看默認的autocommit值

SELECT @@autocommit;

MySQL中事務控制對的示例分析
4. 查看bank_account數據表所有記錄

SELECT * FROM bank_account;

MySQL中事務控制對的示例分析
5. 開始事務控制并執行兩條SQL語句

START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;COMMIT;

MySQL中事務控制對的示例分析
6. 查看此時數據表的內容

SELECT * FROM bank_account;

MySQL中事務控制對的示例分析
7. 再次開始事務控制,同樣插入兩條一樣的SQL語句,但將commit(提交)變為rollback(回滾)

START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;ROLLBACK;

MySQL中事務控制對的示例分析
8. 再次查看數據表內容,發現回滾之后數據無變化

SELECT * FROM bank_account;

MySQL中事務控制對的示例分析
注:本文是博主MySQL學習的總結,不支持任何商用,轉載請注明出處!如果你也對MySQL學習有一定的興趣和理解,歡迎隨時找博主交流~

以上是“MySQL中事務控制對的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

满城县| 汕头市| 自治县| 兴隆县| 九台市| 开鲁县| 拉萨市| 马尔康县| 通许县| 蓬莱市| 岳普湖县| 萨嘎县| 分宜县| 饶平县| 潼关县| 观塘区| 砀山县| 罗山县| 聂拉木县| 晋中市| 山阴县| 洛阳市| 望江县| 重庆市| 清镇市| 托克逊县| 桃园县| 康保县| 阿坝| 白玉县| 永定县| 正阳县| 宁蒗| 竹溪县| 泊头市| 新津县| 杨浦区| 北川| 景德镇市| 镇沅| 建阳市|