MySQL何時隱式提交或回滾一個事務? |
發布時間: 2012/8/24 17:35:06 |
MySQL以默認允許autocommit模式來開始每一個客戶端連接。當autocommit被允許之時,如果SQL語句不返回錯誤的話,MySQL在每個SQL語句之后,做一個提交。 如果你關閉autocommit模式并且關閉一個連接而不調用你的事務的明確提交,則MySQL回滾你的事務。
如果SQL語句返回一個錯誤,提交/回滾行為取決于這個錯誤。請參閱15.2.15節,“InnoDB錯誤處理”。 下列每一個語句(以及它們的任何同義詞)隱式結束一個事務,就好像在執行這個語句之前你做了一個COMMIT: · ALTER FUNCTION, ALTER PROCEDURE, ALTER TABLE, BEGIN, CREATE DATABASE, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, DROP DATABASE, DROP FUNCTION, DROP INDEX, DROP PROCEDURE, DROP TABLE, LOAD MASTER DATA, LOCK TABLES, RENAME TABLE, SET AUTOCOMMIT=1, START TRANSACTION, TRUNCATE, UNLOCK TABLES.
· UNLOCK TABLES 僅在如果任何表當前被鎖定之時,提交一個事務。 · 在InnoDB中的CREATE TABLE語句被作為一個單獨的事務來處理。這意味著來自用戶的ROLLBACK不撤銷用戶在事務過程中生成的CREATE TABLE語句。
事務不能被嵌套。當你發出START TRANSACTION語句或與之同義的語句之時,這是對任何當前事務隱式提交的一個結果。 本文出自:億恩科技【www.endtimedelusion.com】 |