使用SQL Server 2016时态表查询已删除记录的最佳方法是什么?

Le-*_*nes 7 temporal-database sql-server-2016

我正在查看SQL Server 2016时态表,找不到任何有效的方法来查询现在删除的所有历史记录.

我不喜欢软删除或移动到'已删除的项目表',因为我觉得时态表是多余的.

这可以通过时态表以有效的方式实现吗?

小智 10

时态表旨在为您提供数据的时间点视图,而不是状态视图 - 它实际上并不了解状态.用户无法确定行是如何到达时态历史表的.

如果您没有暂时暂停/停止时态表上的系统版本控制,那么您只需要找到历史表和活动表之间的增量.历史记录表中活动表中没有相应行的所有剩余行都是已删除的行.

例如,如果你有tblCustCalls并且使用tblCustCallsHistory启用了temporal,就像这样SELECT * FROM tblCustCallsHistory WHERE ID NOT IN (SELECT ID FROM tblCustCalls).在此示例中,ID是主键.如果表非常大但基本概念不会改变,则可以优化TSQL.