星期日, 十二月 09, 2007

mysql事务

事务在mysql中,是否支持取决于后端的表驱动,如果是缺省的MyISAM表是不支持事务的,通常需要InnoDB来支持事务,创建表时可以指定这个表的驱动类型,比如:

create table vv ( v varchar(4)) engine=innodb;

对于支持事务的InnoDB表,缺省时,如果不显式启动事务,每条命令会自动启动一个事务,并被自动commit。但我们可以更改一个系统变量autocommit,当autocommit设置为0时(set autocommit=0;),可以让mysql象oracle一样,命令不会触发事务的commit,需要手动的commit或者rollback(可以在多条命令后commit或rollback)。但在commit之前,我们可以用select将改动查询回来(也就是说查到的是buffer里面的数据),但其它的session是不会查到这些没有提交的数据的。

当然,即便设置了autocommit=1; 一样可以通过 start transaction来启动事务。



0 Comments:

发表评论

<< Home