MySQL - Explicit Commit / Implicit Commit / Autocommit



資料庫提交數據的三種類型:

顯式提交 (Explicit Commit)

COMMIT 命令完成提交,例如:

select * from dept;
commit;

隱式提交 (Implicit Commit)

運行某些指令之後資料庫自動完成,不需要再做 COMMIT,例如:

CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

隱式提交的指令有:CREATE TABLEDROP TABLE 等,這些指令各自被視作單一的 transaction,因此執行完畢做 ROLLBACK 不會有用。更多可以參考 Statements That Cause an Implicit Commit

自動提交 (Autocommit)

如果 autocommit mode 開啟的話,每一個 SQL statement 都將被視作單一的 transaction,不需要 COMMIT,會自動完成提交。MySQL 默認 autocommit mode 開啟。

可以用 SELECT @@autocommit 指令確認 autocommit mode 是否開啟,是的話值為 1。

Reference

autocommit, Commit, and Rollback MYSQL的COMMIT和ROLLBACK使用讲解