而在终端(在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值
它是永远失去了什么?
我假定这是一个已经提交的事务? 如果是这样,这就是“承诺”的意思,你不能回去。
如果你是幸运的,一些数据可能是可恢复的。 现在停止数据库。
下面是我在同一个主题前面写了一个答案 。 我希望这是有帮助的。
这可能是太: Recoved PostgreSQL中删除的行 。
除非数据是绝对重要的,就从备份中恢复,这将是很多更容易,更痛苦。 如果你没有备份,认为自己睡得thwacked。
如果你发现错误并立即使用数据库打倒任何应用程序,并把它离线,您可以潜在地使用即时点时间恢复(PITR)重放您写日志(WAL)文件备份到,但不包括该当错误的交易作出的时刻。 这将数据库恢复到它以前的状态,从而有效地“撤销”该交易。
作为生产应用程序数据库的方法也有一些明显的局限性,但也有其PITR可能提供最好的选择的情况下,特别是当发生重要数据丢失。 但是,它是没有价值的,如果归档是不是已经腐败事件之前配置。
https://www.postgresql.org/docs/current/static/continuous-archiving.html
类似的功能与其他关系型数据库引擎的存在。