2010-01-29 65 views
19

我正在阅读关于如何使用数据库类型和数据库引擎的事务的非常详细的教程,但我还没有找到一个指导,告诉我什么时候以及为什么我应该使用它们。什么时候应该在我的查询中使用事务?

我知道交易通常用于银行业务,所以当我们使用金钱数据时,但我可以想象他们以其他方式使用。

今天我正在为一个关系数据库的各种INSERT语句工作,我想知道这是否是我应该使用它们的情况之一。

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

有人可以解释或给这些基本规则的一些链接?我正在使用MySQL 5.0.8。我是否应该为所有需要交易的表使用InnoDB?如果是的话,是InnoDB慢于普通的MyISAM,但我不应该担心这一点?

感谢

回答

15

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

Look here for some excellent answers and their reasons for using them

+0

感谢您的帮助,我还发现了一些与此处的交易相关的技术http://www.kennynet.co.uk/2008/12/02/php-pdo-nested-transactions/ – vitto 2010-01-29 11:25:31

7

除了Nick Craver写的内容之外,当您需要以原子方式执行一系列写操作时,您会希望使用事务;也就是说,他们都应该成功,否则都不应该成功。

6

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

  • 从表读出后续删除
  • 写作相关的数据到多个表
3

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

0

在一些框架中,例如春天,如果失败,自动事务允许重新执行事务。

相关问题