久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

114次閱讀
沒有評論

共計 1817 個字符,預計需要花費 5 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

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

什么是事務控制

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

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

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

事務用于管理 INSERT、UPDATE 和 DELETE 語句

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

從張三的賬戶減去 100 元

給李四的賬戶增加 100 元

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

事務的四個特性

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

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

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

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

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

MySQL 的事務控制

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

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

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

例子

登陸數據庫,使用 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 中事務控制對的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計1817字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 双鸭山市| 富宁县| 龙陵县| 毕节市| 金门县| 武鸣县| 阜康市| 台南市| 绿春县| 灌南县| 盘锦市| 昌都县| 浏阳市| 安平县| 鹿邑县| 山西省| 锡林郭勒盟| 安溪县| 泾川县| 辽宁省| 临清市| 页游| 松江区| 新蔡县| 宁津县| 朝阳区| 霸州市| 延吉市| 平原县| 葫芦岛市| 安图县| 深泽县| 砚山县| 南部县| 信宜市| 孟村| 孟州市| 无极县| 肥东县| 竹北市| 利辛县|