MySQL何時(shí)隱式提交或回滾一個(gè)事務(wù)? |
發(fā)布時(shí)間: 2012/8/24 17:35:06 |
MySQL以默認(rèn)允許autocommit模式來開始每一個(gè)客戶端連接。當(dāng)autocommit被允許之時(shí),如果SQL語句不返回錯(cuò)誤的話,MySQL在每個(gè)SQL語句之后,做一個(gè)提交。 如果你關(guān)閉autocommit模式并且關(guān)閉一個(gè)連接而不調(diào)用你的事務(wù)的明確提交,則MySQL回滾你的事務(wù)。
如果SQL語句返回一個(gè)錯(cuò)誤,提交/回滾行為取決于這個(gè)錯(cuò)誤。請(qǐng)參閱15.2.15節(jié),“InnoDB錯(cuò)誤處理”。 下列每一個(gè)語句(以及它們的任何同義詞)隱式結(jié)束一個(gè)事務(wù),就好像在執(zhí)行這個(gè)語句之前你做了一個(gè)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 僅在如果任何表當(dāng)前被鎖定之時(shí),提交一個(gè)事務(wù)。 · 在InnoDB中的CREATE TABLE語句被作為一個(gè)單獨(dú)的事務(wù)來處理。這意味著來自用戶的ROLLBACK不撤銷用戶在事務(wù)過程中生成的CREATE TABLE語句。
事務(wù)不能被嵌套。當(dāng)你發(fā)出START TRANSACTION語句或與之同義的語句之時(shí),這是對(duì)任何當(dāng)前事務(wù)隱式提交的一個(gè)結(jié)果。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |