Meinen Kommentar in eine Antwort umwandeln ..
Wenn der Wert tatsächlich aktualisiert wird, werden Änderungen protokolliert. Wenn Sie denselben Wert aktualisieren, werden neue Versionen für jede Zeile aufgezeichnet, die Spaltenwerte bleiben jedoch gleich.
Unten ist das Arbeitsbeispiel:
CREATE TABLE dbo.blah1
-- PK is a requirement !!
(
foo INT identity(1, 1) PRIMARY KEY
,baa INT
,SysStartTime DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL
,SysEndTime DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL
,PERIOD FOR SYSTEM_TIME(SysStartTime, SysEndTime)
)
WITH (SYSTEM_VERSIONING = ON);
-- insert data
insert into dbo.blah (baa)
values (1)
Überprüfen Sie nun die Daten
-- check data
SELECT * FROM dbo.blah;
select * from [dbo].[MSSQL_TemporalHistoryFor_629577281]
Dummy-Update durchführen
update blah
set baa = baa
Führen Sie eine weitere Dummy-Aktualisierung durch. Es gibt Zeilen mit denselben Werten, aber unterschiedlichen Systemzeiten - Start und Ende.
Sie müssen über einen geeigneten Mechanismus verfügen, um die Verlaufstabelle zu bereinigen, da diese erheblich größer werden kann, wenn Sie vergessen, sie zu kürzen.