我何时应该在查询中使用交易?

vit*_*tto 27 mysql pdo transactions data-transfer

我正在阅读有关如何使用数据库类型和数据库引擎的事务的非常详细的教程,但我没有找到一个指导,教我何时以及为什么要使用它们.

我知道交易通常用于银行业务,所以当我们处理货币数据时,我可以想象它们会以许多其他方式使用.

今天我正在编写一个包含INSERT关系数据库的各种语句的页面,我想知道这是否是我应该使用它们的情况之一.

我得到一个印象,我不知道数据可以部分丢失的情况(除了编码器错误),所以我总是担心何时应该使用它们.

有人可以解释或给出这些基本规则的一些链接吗?

我正在使用MySQL 5.0.8.我应该InnoDB用于所有需要交易的表吗?如果是的话,InnoDB比常见的慢,MyISAM但我不应该担心吗?

谢谢

Nic*_*ver 18

基本上,只要您有一个工作单元,对外部更改敏感或需要能够回滚每个更改,如果发生错误或其他原因.

在这里查看一些优秀的答案及其使用原因.

  • _“在这里寻找一些优秀的答案”_ — 实际上有几个非常糟糕的答案,尽管得票率很高。 (2认同)

dan*_*ben 10

除了Nick Craver写的内容之外,当你有一系列需要原子执行的写操作时,你会想要使用一个事务; 也就是说,他们都应该成功,否则都不会成功.


Ign*_*ams 9

如果在完成任务失败或在任务中间读取或写入其他人可能导致数据损坏,则应使用事务处理.这些包括但不限于:

  • 从表中读取以供后续删除
  • 将相关数据写入多个表


Nat*_*ich 6

当您有一组必须是原子的操作(全部成功或全部成功)时,您可以使用事务。将这些操作包装在事务中允许您在遇到错误时回滚已经成功的操作。它还确保您正在使用的数据是一致的,因为锁定将一直保持到事务完成为止。