如何回滚在PostgreSQL的更新(How to rollback an update in Po

2019-09-24 02:39发布

而在终端(在Ubuntu清晰)使用SQL在我的PostgreSQL数据库编辑一些记录,我做了一个错误的更新。

代替 -

update mytable set start_time='13:06:00' where id=123;

我打字 -

update mytable set start_time='13:06:00';

所以,所有的记录现在具有相同START_TIME值。

有没有办法撤消这一变化? 有一些500+表中的记录,我不知道什么是每条记录的START_TIME值

它是永远失去了什么?

Answer 1:

我假定这是一个已经提交的事务? 如果是这样,这就是“承诺”的意思,你不能回去。

如果你是幸运的,一些数据可能是可恢复的。 现在停止数据库。

下面是我在同一个主题前面写了一个答案 。 我希望这是有帮助的。

这可能是太: Recoved PostgreSQL中删除的行 。

除非数据是绝对重要的,就从备份中恢复,这将是很多更容易,更痛苦。 如果你没有备份,认为自己睡得thwacked。



Answer 2:

如果你发现错误并立即使用数据库打倒任何应用程序,并把它离线,您可以潜在地使用即时点时间恢复(PITR)重放您写日志(WAL)文件备份到,但不包括该当错误的交易作出的时刻。 这将数据库恢复到它以前的状态,从而有效地“撤销”该交易。

作为生产应用程序数据库的方法也有一些明显的局限性,但也有其PITR可能提供最好的选择的情况下,特别是当发生重要数据丢失。 但是,它是没有价值的,如果归档是不是已经腐败事件之前配置。

https://www.postgresql.org/docs/current/static/continuous-archiving.html

类似的功能与其他关系型数据库引擎的存在。



文章来源: How to rollback an update in PostgreSQL