答案 0 :(得分:92)
如果你还没有备份,你几乎就是捏造了。
答案 1 :(得分:28)
如果您尚未提交交易,请尝试rollback
。如果您已经提交了事务(通过commit
或退出命令行客户端),则必须从上次备份中恢复数据。
答案 2 :(得分:12)
“回滚”仅在您使用transactions时有效。这样,您可以将查询组合在一起并撤消所有查询(如果只有其中一个查询失败)。
但是如果你已经提交了事务(或者使用了常规的DELETE查询),那么获取数据的唯一方法就是从以前制作的备份中恢复它。
答案 3 :(得分:5)
在开始查询之前使用ROLLBACK
命令。这样你就可以在任何时间点...
。
例如:
答案 4 :(得分:3)
接受的答案并不总是正确的。如果在MySQL上配置二进制日志记录,则可以将数据库回滚到之前仍有快照和binlog的任何位置。
7.5 Point-in-Time (Incremental) Recovery Using the Binary Log 是了解此设施的良好起点。
答案 5 :(得分:2)
在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;
答案 6 :(得分:0)
如果您想要回滚数据,首先需要执行autocommit = 0然后执行查询删除,插入或更新。
执行查询后执行rollback ...
答案 7 :(得分:0)
我也从我的开发数据库中删除了一些值,但是我在QA数据库中有相同的副本,所以我做了一个生成脚本并选择了“脚本数据类型”到“仅数据”并选择了我的表。
然后我得到了包含相同数据的insert语句,然后在我的开发数据库上运行脚本。
答案 8 :(得分:-1)
回滚通常不适用于这些删除功能,当然备份只能保存您。
如果没有备份,则无法恢复它,因为在PuTTY上运行删除查询,一旦您触发删除查询,使用.sql文件的Derby会自动提交。
答案 9 :(得分:-1)
在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