php mysql 事务提交_php – mysql提交和事务

在InnoDB中,如果尚未更改autocommit的默认设置(“on”),则无需为单个查询显式启动或结束事务.如果启用了自动提交,InnoDB会自动封闭事务中的每个SQL查询,这相当于START TRANSACTION;查询;承诺;.

如果在InnoDB中明确使用启动自动提交的START TRANSACTION,那么在START TRANSACTION语句之后执行的任何查询都将被执行,或者所有查询都将失败.这在银行业环境中很有用,例如:如果我将500美元转移到您的银行账户,只有从我的银行余额中扣除了这笔金额并添加到您的银行账户后,该操作才会成功.所以在这种情况下,你会运行类似的东西

START TRANSACTION;

UPDATE customers SET balance = balance - 500 WHERE customer = 'Daan';

UPDATE customers SET balance = balance + 500 WHERE customer = 'Dennis';

COMMIT;

这可确保两个查询都能成功运行,或者不运行,但不能只运行一个查询.

当您应该使用交易时,This post还有更多内容.

在InnoDB中,您很少需要锁定整个表;与MyISAM不同,InnoDB支持行级锁定.这意味着客户端不必锁定整个表,从而迫使其他客户端等待.客户端应该只锁定他们实际需要的行,允许其他客户端继续访问他们需要的行.

您可以阅读有关InnoDB交易here的更多信息.有关死锁的问题,请参阅文档的第14.2.8.8和14.2.8.9节.如果查询失败,您的MySQL驱动程序将返回一条错误消息,指出原因;如果需要,您的应用应该重新发出查询.

最后,在您的示例代码中,您使用了mysql_query.如果您正在编写新代码,请停止使用旧的,缓慢的,已弃用的PHP mysql_库并使用mysqli_或PDO代替:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值