0

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

谢谢,

4

1 回答 1

1

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

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

如果某些东西已经提交到数据库,据我所知,除非你有备份,否则它不能回滚(不知道 - 也许理论上可以根据 WAL 来做......但可能不是)。几年前,我正在实施一个带有“热备用备份服务器”的系统,它总是比生产数据库晚半小时——然后我可以发出“遇险信号”,备份服务器将以旧状态联机数据库,即如果我犯了一些错误,例如update users set password=md5('foo' || salt)而不是update users set password=md5('foo' || salt) where username='tobixen'. 如果主数据库出现故障,“热备用”将前滚然后上线。如果对此有任何兴趣,我可能会发布有关此的其他详细信息。

如果您预计会遇到麻烦,通常也可以将数据库和脚本设计成手动回滚是微不足道的。

于 2012-07-05T05:41:29.777 回答