Chuyển đổi nhận xét của tôi để trả lời ..
Nếu giá trị thực sự được cập nhật, thì nó sẽ ghi lại các thay đổi. Nếu bạn cập nhật cùng một giá trị, các phiên bản mới cho mỗi hàng sẽ được ghi lại, nhưng các giá trị cột sẽ giữ nguyên.
Dưới đây là ví dụ làm việc:
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)
Bây giờ hãy kiểm tra dữ liệu
-- check data
SELECT * FROM dbo.blah;
select * from [dbo].[MSSQL_TemporalHistoryFor_629577281]
thực hiện cập nhật giả
update blah
set baa = baa
Thực hiện cập nhật hình nộm onemore .. sẽ có các hàng có cùng giá trị nhưng hệ thống khác nhau - bắt đầu và kết thúc.
Bạn phải có một cơ chế thích hợp để dọn sạch bảng lịch sử vì nó có thể phát triển lớn hơn đáng kể nếu bạn quên cắt bớt nó.