中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

MySQL中有哪些事務控制語句

發布時間:2021-07-13 16:42:54 來源:億速云 閱讀:1316 作者:Leah 欄目:MySQL數據庫

今天就跟大家聊聊有關MySQL中有哪些事務控制語句,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

事務SQL 控制語句

MySQL事務遵從ACID:

? Atomic(原子性):所有語句作為一個單元全部成功執行或全部取消。

? Consistent(一致性):如果數據庫在事務開始時處于一致狀態,則在執行該事務期間將保留一致狀態。

? Isolated(隔離性):事務之間不相互影響。

? Durable(持久性):事務成功完成后,所做的所有更改都會準確地記錄在數據庫中。所做的更改不會丟失

1) 事務SQL 控制語句

? START TRANSACTION(或BEGIN):顯式開始一個新事務

? SAVEPOINT:分配事務過程中的一個位置,以供將來引用

? COMMIT:永久記錄當前事務所做的更改

? ROLLBACK:取消當前事務所做的更改

? ROLLBACK TO SAVEPOINT:取消在savepoint 之后執行的更改

? RELEASE SAVEPOINT:刪除savepoint 標識符

? SET AUTOCOMMIT:為當前連接禁用或啟用默認autocommit 模式

2) AUTOCOMMIT 模式

如何設置 AUTOCOMMIT 模式決定了如何以及何時開始新事務。默認情況下,AUTOCOMMIT 處于全局啟用狀態,這意味著會強制每個 SQL 語句隱式開始一個新事務。可以通過一個選項文件全局禁用 AUTOCOMMIT,也可以通過設置 autocommit 變量為每個會話禁用它。啟用 AUTOCOMMIT 會限制每個語句,并進而影響其自身事務中的事務表。這樣可以有效地防止在一個事務中執行多個語句。這意味著,您將無法通過 COMMIT 或 ROLLBACK 作為一個單元提交或回滾多個語句。有時,會將這種情況誤認為根本沒有事務。但是,情況并非如此。啟用 AUTOCOMMIT 后,每個語句仍會以原子方式執行。例如,通過在插入多個行時比較違反約束限制的效果,便可看出啟用 AUTOCOMMIT 和根本不具有事務之間的差別。在非事務表(如 MyISAM)中,一旦發生錯誤,語句就會終止,已經插入的行會保留在該表中。而對于 InnoDB 表,已經插入的所有行都會從該表中刪除,從而不會產生任何實際影響。

AUTOCOMMIT確定開始新事務的方式和時間;默認情況下, AUTOCOMMIT 模式處于啟用狀態:作為一個事務隱式提交每個語句;

在my.cnf中將 AUTOCOMMIT 模式設置為 0,或者SET GLOBAL AUTOCOMMIT=0;SET SESSION AUTOCOMMIT=0; SET @@AUTOCOMMIT :=0; 則禁用 AUTOCOMMIT,事務會跨越多個語句,需要使用 COMMIT 或 ROLLBACK 結束事務;

使用 SELECT 檢查 AUTOCOMMIT 設置:

SELECT @@AUTOCOMMIT;

3) 隱式提交

COMMIT 語句始終會顯式提交當前事務。其他事務控制語句(例如,本幻燈片列出的語句)還具有隱式提交當前事務的作用。除了這些事務控制語句之外,其他類型的語句可能也具有隱式提交并進而終止)當前事務的作用。這些語句的行為就像在執行實際語句之前發出 COMMIT 一樣。此外,這些語句本身并非事務語句,也就是說,如果成功,則無法回滾。通常,數據定義語句、據訪問和用戶管理語句以及鎖定語句具有這種效果。

注:有很多例外情況,而且這些語句并非都能在所有版本的服務器上導致隱式提交。但是,建議將所有非 DML 語句都視為可導致隱式提交。有關導致隱式提交的完整語句列表,請參閱《MySQL 參考手冊》:http://dev.mysql.com/doc/refman/5.6/en/implicit-commit.html

隱式提交會終止當前事務。用于隱式提交的 SQL 語句:

l  START TRANSACTION

l  SET AUTOCOMMIT = 1

導致提交的非事務語句:

l  數據定義語句(ALTER、 CREATE 和 DROP)

l  管理語句(GRANT、 REVOKE 和 SET PASSWORD)

l  鎖定語句(LOCK TABLES 和 UNLOCK TABLES)

導致隱式提交的語句示例:

Mysql>TRUNCATE TABLE

Mysql>LOAD DATA INFILE

4) 事務存儲引擎

使用 SHOW ENGINES 列出引擎特征:

mysql> SHOW ENGINES\G

********************* 2. row *********************

Engine: InnoDB

Support: DEFAULT

Comment: Supports transactions, row-level locking,

and foreign keys

Transactions: YES

XA: YES

Savepoints: YES

********************* 1. row *********************

Engine: MyISAM

Support: YES

Comment: MyISAM storage engine

Transactions: NO

XA: NO

Savepoints: NO

看完上述內容,你們對MySQL中有哪些事務控制語句有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

兴山县| 翁源县| 阿拉尔市| 岫岩| 芜湖市| 酉阳| 临漳县| 昌邑市| 霍邱县| 扎囊县| 杭锦旗| 海宁市| 大竹县| 台东县| 新疆| 广德县| 凤城市| 舟曲县| 临邑县| 泉州市| 阿克陶县| 秭归县| 江城| 辉南县| 神农架林区| 曲靖市| 观塘区| 遵义市| 水富县| 龙泉市| 巍山| 双流县| 吉林市| 恩平市| 视频| 涡阳县| 大丰市| 梓潼县| 抚宁县| 东港市| 平湖市|