database - 使用临时备份表时保持一致性

标签 database

这与 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/

相关文章:

mysql - 我可以有一个使用不同表参数的触发器吗?

database - 如何在 StarUML 中添加多重值

php - 修改现有代码

java - SQL Server 在没有表锁的情况下使用多个连接更新表

c# - 关闭 WPF GUI 应用程序的正确方法 : GetCurrentProcess(). Kill()、Environment.Exit(0) 或 this.Shutdown()

php - 在 Laravel PHP 中使用数据库 session 驱动程序 Session::put() 数据存储在哪里?

c# - 无法将类型 'System.Linq.IQueryable<int>' 转换为 'int'

mysql - Visual C++/MySql 应用程序在其他计算机上被锁定

python - 如何检索通过 Django 泛型关系链接的对象并确定它们的类型?

sql - 是否可以从 SQL Server 调用 Web 服务?