应用时段表(Temporal Table)实现数据版本控制与回溯查询
利用SQL标准中的SYSTEM_TIME和APPLICATION_TIME功能(如MariaDB或SQL Server 2016+),自动维护数据的历史版本并支持AS OF查询。 · 难度:入门 · +10XP
应用时段表(Temporal Table)实现数据版本控制与回溯查询
分析需要查看某个时间点的数据快照?本教程教你创建系统版本化表(system-versioned temporal table),自动记录每一行的有效时间段。讲解FOR SYSTEM_TIME AS OF、BETWEEN和CONTAINED IN子句的用法,以及如何手动插入历史记录和设置保留期。还会对比慢速变更维度(SCD)的实现。
-- SQL Server 创建系统版本化表
CREATE TABLE dbo.Employee (
EmpID INT PRIMARY KEY,
Name NVARCHAR(100),
Position NVARCHAR(100),
StartTime DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL,
EndTime DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL,
PERIOD FOR SYSTEM_TIME (StartTime, EndTime)
) WITH (SYSTEM_VERSIONING = ON);
-- 查询2024-03-01时的数据
SELECT * FROM Employee
FOR SYSTEM_TIME AS OF '2024-03-01T00:00:00';