Tho*_*hor 5 sql t-sql sql-server
我目前正在学习在sql server 2016中引入的新的"系统版本化时态表".但是,我有点难以理解"生成始终作为行开始/结束"的确切含义和用法和"PERIOD FOR SYSTEM_TIME",这两者都是系统版本化时态表所必需的.
有人可以向我解释一下吗?在此先感谢您的帮助!
CREATE TABLE dbo.Employees
(
empid INT NOT NULL CONSTRAINT PK_Employees PRIMARY KEY NONCLUSTERED,
empname VARCHAR(25) NOT NULL,
department VARCHAR(50) NOT NULL,
salary NUMERIC(10, 2) NOT NULL,
sysstart DATETIME2(0) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
sysend DATETIME2(0) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,
PERIOD FOR SYSTEM_TIME(sysstart, sysend),
INDEX ix_Employees CLUSTERED(empid, sysstart, sysend)
)
WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.EmployeesHistory)
);
Run Code Online (Sandbox Code Playgroud)
SQL Server 2016 中的时态表
\n\n这是一个令人惊奇的新功能SQL Server 2016。
在快点中,什么是时态表?
\n\ndatetime2数据类型。来自MSDN
\n\n\n\n\n系统版本控制的时态表必须定义一个主键,并且\n 必须使用两个 datetime2\n 列定义一个 PERIOD FOR SYSTEM_TIME,声明为 GENERATED ALWAYS AS ROW START / END
\n
因此,A 表的主键system-versioned(将其视为时态表的昵称)已定义,并且恰好有一个PERIOD FOR SYSTEM_TIME定义为两个 datetime2 列,以允许轻松的时间点分析或时间旅行(正如 Borko Novakovic 先生在第 9 频道所说),声明作为GENERATED ALWAYS AS ROW START / END
参考:
\n\n\n| 归档时间: |
|
| 查看次数: |
6765 次 |
| 最近记录: |