mysql事务用begin……commit好还是用set autocommit……commit好

我觉得第一种好,因为即使commit失败或者异常了,会自己超时释放锁住的表。第二种就悲剧了,commit失败,事务不会超时,表会一直被锁住。我理解的对吗

如果设置autocommit, 那么delete,modify,insert等操作将会自动提交,这样你就没办法回退等。
而用start transaction,在commit的时候才会提交。这样你可以在对结果进行了确认后,再commit。这样安全性更好。

MYSQL的事务处理主要有两种方法。
1、用begin,rollback,commit来实现
begin 开始一个事务
rollback 事务回滚
commit 事务确认
2、直接用set来改变mysql的自动提交模式
MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交
来实现事务的处理。
但注意当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束,注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!
个人推荐使用第一种方法!
MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!(切记!)