小编Pau*_*ick的帖子

时态表:每次更新时多次插入?

实际问题: sql 2019 服务器中是否有任何东西(除了触发器之外)可以导致在临时表中更新单行时在历史表中插入多行?

背景: 我有一个名为 Candidate 的现有表,它没有计算列,也没有触发器。我实现版本控制如下:

ALTER TABLE dbo.Candidate 
     ADD BeginDate datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
     EndDate datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT CAST('9999-12-31 23:59:59.9999999' AS datetime2),
     PERIOD FOR SYSTEM_TIME (BeginDate,EndDate)
GO

ALTER TABLE dbo.Candidate
     SET(SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Candidate_History, DATA_CONSISTENCY_CHECK = ON))
Run Code Online (Sandbox Code Playgroud)

当我对表进行更新时,即使是单个列( update候选集 lastContacted = '2021-10-16 23:27:46.927' where id = 44999 )也会有多行添加到历史表中:

| BeginDate | EndDate |
| --------- | ------- |
| 2022-01-24 08:25:55.3718538 | 2022-01-24 …
Run Code Online (Sandbox Code Playgroud)

sql-server temporal-tables sql-server-2019

5
推荐指数
1
解决办法
881
查看次数