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.enkj.com】 |