日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL复习资料(八)——MySQL-事务

發布時間:2024/8/26 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL复习资料(八)——MySQL-事务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

📋導讀📋

💝博客主頁:紅目香薰_CSDN博客-大數據,MySQL,Java領域博主💝

?本文由在下【紅目香薰】原創,首發于CSDN?

🤗2022年最大愿望:【服務百萬技術人】🤗

📋前言📋

本文屬于系列文章,分別為:

MySQL復習資料(一)——MySQL環境安裝

MySQL復習資料(二)——MySQL-DDL語句

MySQL復習資料(三)——MySQL-DML語句

MySQL復習資料(四)——MySQL-聚合函數

MySQL復習資料(五)——MySQL-索引

MySQL復習資料(六)——MySQL-多表聯合查詢

MySQL復習資料(七)——MySQL-存儲過程

MySQL復習資料(八)——MySQL-事務

MySQL復習資料(九)——MySQL-圖形化工具使用

📋正文📋

MySQL復習資料(八)——MySQL-事務

目錄

事務的概念

事務的基本特性

事務的基本操作

事務示例


事務的概念

現實生活中,人們經常會進行轉賬操作,轉賬可以分為轉入和轉出兩部分,只有這兩個部分都完成才認為轉賬成功。在數據庫中,這個過程是使用兩條SQL語句來實現的,如果其中任意一條語句出現異常沒有執行,則會導致兩個賬戶的金額不同步,造成錯誤。為了防止上述情況的發生,就需要使用MySQL中的事務(Transaction)。

在MySQL中,事務就是針對數據庫的一組操作,它可以由一條或多條SQL語句組成,且每個SQL語句是相互依賴的。只要在程序執行過程中有一條SQL語句執行失敗或發生錯誤,則其他語句都不會執行。也就是說,事務的執行要么成功,要么就返回到事務開始前的狀態,這就保證了同一事務操作的同步性和數據的完整性。

事務的基本特性

MySQL中的事務必須滿足A、C、I、D這4個基本特性,具體如下:

(1)原子性(Atomicity)。原子性是指一個事務必須被視為一個不可分割的最小工作單元,只有事務中所有的數據庫操作都執行成功,才算整個事務執行成功。事務中如果有任何一個SQL語句執行失敗,已經執行成功的SQL語句也必須撤銷,數據庫的狀態退回到執行事務前的狀態。

(2)一致性(Consistency)。一致性是指在事務處理時,無論執行成功還是失敗,都要保證數據庫系統處于一致的狀態,保證數據庫系統不會返回到一個未處理的事務中。MySQL中的一致性主要由日志機制實現,通過日志記錄數據庫的所有變化,為事務恢復提供了跟蹤記錄。

(3)隔離性(Isolation)。隔離性是指當一個事務在執行時,不會受到其他事務的影響。保證了未完成事務的所有操作與數據庫系統的隔離,直到事務完成為止,才能看到事務的執行結果。隔離性相關的技術有并發控制、可串行化、鎖等。當多個用戶并發訪問數據庫時,數據庫為每一個用戶開啟的事務,不能被其他事務的操作數據所干擾,多個并發事務之間要相互隔離。

(4)持久性(Durability)。持久性是指事務一旦提交,其對數據庫的修改就是永久性的。需要注意的是,事務的持久性不能做到百分百的持久,只能從事務本身的角度來保證永久性,而一些外部原因導致數據庫發生故障,如硬盤損壞,那么所有提交的數據可能都會丟失。

事務的基本操作

在默認情況下,用戶執行的每一條SQL語句都會被當成單獨的事務自動提交。如果要將一組SQL語句作為一個事務,則需要先執行以下語句顯式地開啟一個事務。

START TRANSACTION;

上述語句執行后,每一條SQL語句不再自動提交,用戶需要使用以下語句手動提交,只有事務提交后,其中的操作才會生效。

COMMIT;

如果不想提交當前事務,可以使用如下語句取消事務(即回滾)。

ROLLBACK;

需要注意的是,ROLLBACK只能針對未提交的事務回滾,已提交的事務無法回滾。當執行COMMIT或ROLLBACK后,當前事務就會自動結束。

事務示例

回滾成功

start transaction;update users set introduce = 'My Heart Will Go On.' where id=1;update users set introduce = 'Some on like you.' where id=2;rollback;select * from users;

提交成功

start transaction;update users set introduce = 'My Heart Will Go On.' where id=1;update users set introduce = 'Some on like you.' where id=2;commit;select * from users;

修改成功。


在大型項目中是不允許使用事務的,但是在小型項目里面很實用的功能。

總結

以上是生活随笔為你收集整理的MySQL复习资料(八)——MySQL-事务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。