这与 What’s your #1 way to be careful with a live database 的已接受答案有关?
假设您创建一个临时表用于备份目的并在原始表中进行更改。这些更改破坏了系统,您想要恢复备份。与此同时,原始表中的一些其他记录也发生了变化(它是一个实时数据库)。现在如果恢复备份,系统将处于不一致状态。
解决这个问题的最佳方法是什么
最佳答案
我不认为这是可取的,我会在将表投入生产之前进行更严格的测试,但假设它无论如何都发生了,你有两个选择:
1.- 创建一个 ON INSERT 触发器,用插入到新表中的行更新临时备份表,调整数据以适应旧表
或
2.- 像这样找出数据中的差异
SELECT * FROM faultyTable
EXCEPT
SELECT * FROM backupTable
当然,您必须将要选择的列调整为公共(public)子集。 EXCEPT 有时也称为 MINUS。
之后,您可以将差异插入备份表并恢复组合。表具有的关系越多,这就变得越来越难...根据用于恢复表的方式,您可能会删除相关数据,因此您也必须选择它。
关于database - 使用临时备份表时保持一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/170556/