所以我想开始一个浏览器游戏项目。仅供练习。
经过多年的 PHP
编程,今天我第一次听说 事务
和 innoDB
。
所以我用谷歌搜索了一下,仍然有一些问题。
我第一次接触它是在一个网站上,上面说在编写浏览器游戏时需要 InnoDB。因为它可能被许多人同时使用,并且如果两个人同时访问数据库表(例如相差一纳秒),则可能会造成困惑,数据可能会丢失,或者您的 SELECT
没有更新,尽管它应该在一纳秒前通过访问进行更新(但脚本仍在运行并且还无法更改它)......等等。
显然,事务
通过首先处理第一次访问(直到完成)然后处理第二次访问来解决这个问题。这是正确的吗?
另一个功能是,如果您的事务
中有2个查询
并且第二个查询失败,它会“回滚”并“删除”(或从不应用)第一个(成功的)查询
的更改。正确的?因此,要么一切按其应有的方式进行,要么什么都没有改变。我认为那太好了。
另一个问题:什么时候应该使用事务?每次访问数据库时?或者仅将其用于对数据库的某些特定访问会更好吗?我应该始终使用 try {} catch() {}
吗?
最后一个问题: 这笔交易如何进行? 我的理解如下:
- 您开始
交易
- 您执行
查询
并更改数据库
或SELECT
某些内容 - 如果一切顺利,您
提交
更改,以便将它们应用到数据库 - 如果
查询
出现问题,它会取消并跳转到catch() {}
,您可以在其中回滚
事务和更改没有得到应用
这是正确的吗?当然,除了如何在代码中启动
、提交
和回滚
事务
的问题之外。
最佳答案
是的,这是正确的。您还可以在运行查询之前创建保存点来保存当前点。我强烈建议您查看 mysql 引用文档,那里有清楚的解释。
关于php - 为什么使用innoDB和事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23278306/