如何在MySQL中回滚我的最后一个删除命令?

Vij*_*jay 52 mysql sql rollback sql-delete

我不小心从表中删除了一些大量的行......

我该如何回滚?

我使用PuTTY执行查询.

如果你们中的任何一个人能安全地引导我走出这个......我将不胜感激......

Omr*_*dan 97

如果你还没有备份,你几乎是捏造的.

  • 我认为这是设计的.保持历史是非常昂贵的.你希望你的数据库快速,而不是原谅. (34认同)
  • 所以没有办法撤消它....哎呀我做错了..我应该使用select查询列出我应该在实际执行查询之前删除的内容..一个很好的教训是要更加谨慎 (5认同)
  • 这是标准数据库的缺陷之一:它们没有历史,只是"现在"的巨大记忆. (5认同)
  • 遗憾的是,情况就是如此.是的,在使用删除或更新之前使用select进行验证总是一个好主意. (3认同)

Aar*_*lla 29

如果您尚未提交交易,请尝试rollback.如果您已提交事务(通过commit或退出命令行客户端),则必须从上次备份还原数据.

  • @Vijay:只需键入“ rollback;” + ENTER (2认同)
  • 这应该是接受的答案而不是当前接受的答案.目前基本上是说"你搞砸了". (2认同)

Sel*_*t0r 13

"回滚"仅在您使用事务时有效.这样,您可以将查询组合在一起并撤消所有查询(如果只有其中一个查询失败).

但是,如果您已经提交了事务(或使用了常规的DELETE查询),那么获取数据的唯一方法就是从先前创建的备份中恢复它.


Aut*_*Win 5

BEGIN TRANSACTION在开始查询之前使用该命令.这样你就可以ROLLBACK在任何时候做事.

例如:

  1. 开始交易
  2. 从学生中选择*
  3. 从学生中删除Id = 2
  4. 从学生中选择*
  5. 回滚
  6. 从学生中选择*

  • 在我的MySQL Shell中,它是START TRANSACTION而不是BEGIN TRANSACTION (2认同)

小智 5

在 MySQL 中:

start transaction;

savepoint sp1;

delete from customer where ID=1;

savepoint sp2;

delete from customer where ID=2;

rollback to sp2;

rollback to sp1;
Run Code Online (Sandbox Code Playgroud)