【问题标题】:A few questions about MySQL transactions关于 MySQL 事务的几个问题
【发布时间】:2013-04-16 10:54:56
【问题描述】:

我是 MySQL 新手,想了解更多。我正在阅读 myseql doc,目前很难理解。


你能解释一下,这些是真的还是假的?

1 - 在 MySQL 中,无法撤消已发生的更新或删除查询。例如,过去 24 小时内有 1900 个查询。没有一个可以撤消。

2 - 只能回滚 MySQL 中的当前事务。

3 - 保存点在事务结束后被销毁。换句话说,今天上午 10 点无法创建存档点。

4 - 保存点和回滚仅在当前事务中有效,并且在提交完成后它们就会消失。

问题:

1 - 如果只能回滚当前事务,那么回滚或事务有什么意义?

如果事务错误为什么要运行它?


编辑:

我创建了一个这样的保存点:

start transaction;
savepoint behnam;
commit;

然后运行了一些更新和删除查询。然后尝试回滚到那个保存点:

rollback to savepoint behnam

我得到:

#1305 - SAVEPOINT behnam does not exist

【问题讨论】:

    标签: mysql transactions


    【解决方案1】:
    1. 如果您在插入数据时存储时间戳,则可以触发查询以删除过去 24 小时。但您无法撤消它们。

    2. 是的,在某些情况下是可能的。请参考rollback and commit

    3. 我认为保存点只有在被覆盖时才会被删除,所以如果您使用与前一个保存点相同的保存点进行事务,它将覆盖最后一个保存点,因此您无法返回

    4. 是的,当前事务提交后,所有保存点都将被删除。参考这个 savepoints

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 2011-05-12
      • 2011-08-24
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多