撤消mysql UPDATE命令

时间:2012-06-06 20:56:47

标签: mysql

我试图在MySQL服务器上进行更新,并且意外忘记添加一个应该编辑一行的额外WHERE子句。

由于我的错误,我现在已经编辑了3500多行。

我可能有备份,但自上次备份以来我做了很多工作,我只是不想浪费一切,因为1个错误的查询。

请告诉我,我可以做些什么来解决这个问题。

4 个答案:

答案 0 :(得分:9)

只是一个想法 - 您是否可以将备份恢复到新数据库,然后执行跨数据库查询以根据以前的数据更新该列?

答案 1 :(得分:8)

如果您提交了交易,那么现在是时候清除备份了,抱歉。但这就是备份的用途。我做过一次这样的事......一次。

答案 2 :(得分:6)

没有

尽管如此,你可以为自己的学习经历感到高兴,并为你现在如何改变习惯而大大减少再次发生这种习惯而感到自豪。你现在可以成为“大师”,可以教幼小的幼崽并引用经过实战训练的经验。

答案 3 :(得分:1)

您现在只能解决一件事,这就是您的习惯,它将在将来为您提供帮助。我知道这是一个老问题,OP必须已经吸取了教训。我只是将它发布给其他人,因为我今天也上过课。

因此,我应该运行一个查询,该查询应该更新约五十条记录,然后MySQL返回此48500 row(s) affected,由于{{1}中的一个愚蠢错误,这给了我一点心脏病}条件:D

因此,这里是一些学习内容:

  1. 在运行WHERE之前,请务必对其进行两次检查,但有时它无济于事,因为您仍然可以犯该愚蠢的错误。
  2. 由于第1步并不总是很有帮助,因此,最好在运行任何会影响数据的查询之前始终备份query
  3. 如果您由于数据库很大而懒于创建备份(就像我在运行该愚蠢的查询时一样),并且需要时间,那么至少要使用 DB,我认为这是克服灾难的一种很好的轻松方式。从现在开始,这就是我对每一个影响数据的查询的处理方式:

我启动TRANSACTION,运行Transaction,然后检查结果是否正确。如果结果没问题,那么我只需Query进行更改,否则将通过COMMIT

克服灾难
ROLLBACK