Các bảng thời gian ghi nhật ký thay đổi khi không có?


7

Thật không may, tôi không có quyền truy cập vào phiên bản SQL 2016 để kiểm tra điều này. Nếu tôi có một bảng thời gian với lược đồ sau:

create table blah (
    foo int identity(1,1),
    baa int
)

và tôi đã chạy các tuyên bố sau:

update blah set baa = baa

nó sẽ ghi nhật ký thay đổi như thể tôi thực sự cập nhật dữ liệu?

Tôi đã xem qua bài viết MSDN cho các bảng tạm thời và một bảng để Sửa đổi dữ liệu nhưng tôi không thể tìm thấy bất cứ điều gì ở đó chỉ định điều này.

Câu trả lời:


9

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]

nhập mô tả hình ảnh ở đây

thực hiện cập nhật giả

update blah 
set baa = baa

nhập mô tả hình ảnh ở đây

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.

nhập mô tả hình ảnh ở đây

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ó.


1
Để dọn dẹp - bạn nghĩ một truy vấn động trên tất cả các bảng sẽ tốt? Thậm chí sau đó bạn có muốn thay đổi bảng chính để ngày bắt đầu quay lại thời gian sớm nhất không? Và sau đó bạn sẽ muốn loại bỏ những hồ sơ trong bảng lịch sử.
Anthony Genovese
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.