sql-如何回滚我在MySQL中的最后一个删除命令?
我不小心从表中删除了很多行...
如何退回?
我使用PuTTY执行查询。
如果您能安全地指导我,我将不胜感激。
10个解决方案
96 votes
如果您尚未进行备份,那么您会感到很费解。
Omry Yadan answered 2020-01-21T02:10:59Z
29 votes
如果尚未提交事务,请尝试rollback。如果已经提交事务(通过commit或退出命令行客户端),则必须从上次备份中还原数据。
Aaron Digulla answered 2020-01-21T02:10:39Z
13 votes
仅当您使用事务时,“回滚”才有效。 这样,您可以将查询分组在一起,如果其中只有一个失败,则可以撤消所有查询。
但是,如果您已经提交了事务(或使用常规的DELETE查询),则取回数据的唯一方法是从先前进行的备份中恢复数据。
Select0r answered 2020-01-21T02:11:24Z
5 votes
开始查询之前,请使用BEGIN TRANSACTION命令。 这样您就可以在任何时间点ROLLBACK。
例如:
开始交易
从学生中选择*
从Id = 2的学生中删除
从学生中选择*
回滚
从学生中选择*
Author PraWin answered 2020-01-21T02:12:14Z
3 votes
接受的答案并不总是正确的。 如果在MySQL上配置二进制日志记录,则可以将数据库回滚到仍然具有快照和binlog的任何先前位置。
7.5时间点(增量)恢复使用二进制日志是学习此功能的一个很好的起点。
Phil Lello answered 2020-01-21T02:12:39Z
2 votes
在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;
Shu Zhang answered 2020-01-21T02:12:58Z
0 votes
如果要回滚数据,首先需要执行autocommit = 0,然后执行查询删除,插入或更新。
执行查询后,然后执行回滚...
Kishore Kishore answered 2020-01-21T02:13:23Z
0 votes
我还从开发数据库中删除了一些值,但是我在QA数据库中具有相同的副本,因此我执行了一个生成脚本,并选择了“脚本数据类型”到“仅数据”选项,然后选择了表。
然后,我获得了具有相同数据的插入语句,然后在开发数据库上运行了脚本。
Nikki answered 2020-01-21T02:13:48Z
-1 votes
在Oracle中,这不是问题:
SQL> delete from Employee where id = '01';
1 row deleted.
SQL> select id, last_name from Employee where id = '01';
no rows selected
SQL> rollback;
Rollback complete.
SQL> select * from Employee where id = '01';
ID FIRST_NAME LAST_NAME START_DAT END_DATE SALARY CITY DESCRIPTION
---- ---------- ---------- --------- --------- ---------- ---------- ---------------
01 Jason Martin 25-JUL-96 25-JUL-06 1234.56 Toronto Programmer
Andreas answered 2020-01-21T02:14:08Z
-1 votes
回滚通常不适用于这些删除功能,并且肯定只有备份可以保存您。
如果没有备份,则无法还原它,因为在PuTTY上运行删除查询后,一旦触发删除查询,就会自动提交使用.sql文件的Derby。
ramakrishnan answered 2020-01-21T02:14:33Z