mysql的myisam引擎[求助]

@Ta 2017-10-04 2335点击
在一次请求中,有增加一个表数据,更新另个表数据,什么确保所有的语句都执行成功?担心有时候增加数据成功,但是更新数据又不成功,什么确保所有的执行都成功再执行?
回复列表(1|隐藏机器人聊天)
  • @Ta / 2017-10-04 / /

    @大尨,明确的表示,MyISAM不支持一致性,不支持事务处理,所以无法实现你想要的功能。如果想在所有操作都成功的时候再执行操作,也就是使用数据库的事务处理特性,请使用InnoDB引擎。InnoDB引擎是一个高效可靠拥有企业级性能的非常优秀的数据库引擎。

    在支持事务处理的InnoDB引擎里,你只需要在开始操作前创建一个事务,操作全部完成之后提交事务,就可以了。如果操作在你提交之前中断,数据库会自动回滚你的操作。并且数据库会保证,一但你提交事务,事务中包含的所有操作要么全部成功,要么全部失败(比如掉电这种意外情况下可能就是全部失败),不会有中间状态。我想这就是你想要的。

    具体开始事务的方法根据你使用的mysql连接函数的不同而不同。
    比如mysqli:http://m.blog.csdn.net/jinbiao520/article/details/7969426
    pdo:http://www.runoob.com/php/php-pdo-transactions.html

添加新回复
回复需要登录