实际问题: 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)