PGSQL 回滚功能或吊销最后一步



我构建了一个pgsql db,并使用JDBC将数据上传到db。 但有时我上传了错误的数据。所以在 pgsql 中它有一些功能或者 SQL 语句可以允许回滚到最后一步,而无需使用备份文件?

谢谢

如果你在事务中运行东西,你可以用"提交"或"回滚"结束事务,因此在你的脚本中,你可能会向用户提出一个交互式问题:"这看起来没问题吗?"然后执行提交或回滚。

请注意,长时间的"事务中空闲"可能对性能有害,因此您应该在超时后进行回滚(或提交)。 当然,最好在执行任何数据库操作之前向用户提出问题。

如果某些内容已经提交到数据库,据我所知,除非您有备份,否则无法回滚(dunno - 也许理论上可以根据 WAL 做到这一点......但可能不是)。 几年前,我正在实施一个带有"暖备用备份服务器"的系统,该系统总是比生产数据库晚半小时 - 然后我可以发出"求救信号",备份服务器将以数据库的旧状态联机,即如果我犯了一些错误,例如update users set password=md5('foo' || salt)而不是update users set password=md5('foo' || salt) where username='tobixen'。 如果主数据库出现故障,"热备用数据库"将前滚,然后联机。 如果有任何插曲,我可能会发布有关此的其他详细信息。

如果您预计会遇到麻烦,通常也可以以这样一种方式设计数据库和脚本,以便执行手动回滚是微不足道的。

最新更新