1. MySQL 通过 SET AUTOCOMMIT,START TRANSACTION ,COMMIT ,ROLLBACK 等语句支持本地事务。
2. 语法格式:
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [ [NO ] RELEASE ]
SET AUTOCOMMIT = {0/1}
3. 默认情况下,MySQL是自动提交的(Autocommit)的
4. 如果需要通过明确的Commit 和 Rollback 来提交和回滚事务,那么就需要通过明确的事务控制命令来开始事务。
注意:这和ORACLE的事务管理有明细区别。
5. START TRANSACTION 或 BEGIN 语句可以开始一项新的事务。
6. COMMIT 和ROLLBACK 用来提交或者回滚事务。
7. CHAIN 和 RELEASE 子句分别用来定义在事务提交或者回滚之后的操作
CHAIN会立即启动一个新事务,并且和刚才的事务具有相同的隔离级别
RELEASE 则会断开和客户端的连接。
8. SET AUTOCOMMIT 可以修改当前连接的提交方式,如果设置了SET AUTOCOMMIT=0 ,则设置之后的所有事务都需要通过明确的命令进行提交或者回滚。
注意:
(1) 如果只是对某些语句需要进行事务控制,则使用START TRANSACTION 语句开始一个事务比较方便,这样事务结束之后可以自动回到自动提交的方式。
(2) 如果希望所有的事务都不是自动提交的,那么通过修改AUTOCOMMIT 来控制事务比较方便,这样不用再每个事务开始的时候再执行STRAT TRANSACTION 语句
示例:
mysql > start transaction;
mysql > insert into actor(actor_id,first_name,last_name) values(12,'Tom','lisa');
mysql> commit; (完成提交) 或者用 commit and chain (完成本次提交,并开启一个新的事务)