40

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

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

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

我的印象是我不知道数据可能部分丢失的情况(除了编码器错误),所以我总是担心什么时候应该使用它们。

有人可以解释这些基本规则或提供一些链接吗?

我正在使用MySQL 5.0.8. 我应该InnoDB用于所有需要事务的表吗?如果是,InnoDB比普通慢,MyISAM但我不应该担心吗?

谢谢

4

6 回答 6

28

基本上任何时候你有一个对外部变化敏感或需要能够回滚每个变化的工作单元,如果发生错误或其他原因。

在此处查找一些出色的答案以及使用它们的原因

于 2010-01-29T00:25:42.873 回答
14

除了 Nick Craver 写的内容之外,当您有一系列需要以原子方式执行的写入时,您可能希望使用事务;也就是说,它们都应该成功,或者没有一个应该成功。

于 2010-01-29T00:26:25.627 回答
11

当您的任务无法完成或其他人在您的任务中间读取或写入可能导致数据损坏时,应使用事务。这些包括但不限于:

  • 从表中读取以进行后续删除
  • 将相关数据写入多个表
于 2010-01-29T00:26:46.633 回答
6

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

于 2010-01-29T00:26:50.103 回答
0

在某些框架中,例如 Spring,自动事务允许在事务失败时重新执行事务。

于 2013-11-01T21:21:29.063 回答
0

主要用于多个相同的凝乳案例,您希望保存有效条目的更改,对于这些表单的提交案例的每个步骤具有多个输入的多步骤表单,以及在获得外部 api 反馈后提交表单.. 主要是当您想要回滚查询以获得一些返回值。

于 2021-08-04T23:07:15.603 回答