1、谁可以使用
只有InnoDB /BDB 的之类的transaction_safe table才能支持。
默认的engine MyISAM 是不支持事务的,show engine可以看到支持的和默认的engine。可以在[mysqld]加入: default_storage_engine=InnoDB; InnoDB就是建立表的默认引擎。
建立InnoDB 表:Create table .... type=InnoDB; Alter table table_name type=InnoDB;(如何查看已有表的类型: show create table table_name)
这样我们就可以在InnoDB 表上进行事务操作了!
2、如何使用
启动事务的方法:
认为分为两种:
1、begin ,rollback,commit .当然有的人用begin /begin work .推荐用START TRANSACTION 是SQL-99标准启动一个事务。
start transaction;
update from account set money=money-100 where name='a';
update from account set money=money+100 where name='b';
commit;
解释: 这样start transaction 手动开启事务,commit手动关闭事务。
2、默认的时候autocommit=1 自动提交是开启的,所以你可以理解为每条语句一输入到mysql就commit了。当你 set autocommit=0 时候,你可以这样:
update from account set money=money-100 where name='a';
update from account set money=money+100 where name='b';
commit;
// 默认都不提交,只有手动键入commit时候才上述都提交。
3.把表修改成InnoDB
alter table person engine=INNODB
4.savepoint说明
savepoint要和事务一起使用,当开启了一个事务后savepoint才会起效
例子 begin; //事务开始
savepoint test; //savepoint保存点
.............. //具体业务
rollback to test; //返回保存点
commit; //提交事务