Bạn có thể sử dụng @@DBTS
chức năng để lấy chuyển đổi hàng hiện tại của một cơ sở dữ liệu nhất định trong SQL Server. Cụ thể hơn, nó trả về giá trị được sử dụng lần cuối lộn xộn giá trị của cơ sở dữ liệu hiện tại.
Ví dụ 1 - Cách sử dụng cơ bản
Để sử dụng @@DBTS
, chỉ cần chọn nó trong SELECT
tuyên bố.
Như thế này:
SELECT @@DBTS;
Kết quả:
+--------------------+ | (No column name) | |--------------------| | 0x0000000000000FA0 | +--------------------+
Ví dụ 2 - Các cơ sở dữ liệu khác nhau
Như đã đề cập, lộn xộn giá trị cụ thể cho từng cơ sở dữ liệu. Do đó, bạn cần đảm bảo rằng mình đang ở đúng cơ sở dữ liệu.
Dưới đây là một ví dụ để chứng minh:
USE Music; SELECT @@DBTS AS "Music rowversion"; Use WideWorldImportersDW; SELECT @@DBTS AS "WideWorldImportersDW rowversion";
Kết quả:
Changed database context to 'Music'. +--------------------+ | Music rowversion | |--------------------| | 0x00000000000007D0 | +--------------------+ (1 row affected) Changed database context to 'WideWorldImportersDW'. +-----------------------------------+ | WideWorldImportersDW rowversion | |-----------------------------------| | 0x0000000000015F90 | +-----------------------------------+ (1 row affected)
Giá trị này được sử dụng ở đâu?
Sự lộn xộn giá trị được sử dụng bởi các cột có chuyển đổi hàng hoặc dấu thời gian loại dữ liệu. Các cột như vậy được cập nhật tự động với một số duy nhất, dựa trên giá trị gia tăng của rowversion , bất cứ khi nào xảy ra chèn hoặc cập nhật.
Sử dụng ví dụ trên, nếu tôi chèn hoặc cập nhật một hàng trong Music
cơ sở dữ liệu và hàng đó có chuyển đổi hàng , giá trị của cột đó có thể sẽ được đặt thành 0x00000000000007D1
(tức là 0x00000000000007D0
tăng thêm 1). Ở giai đoạn này, nếu tôi sử dụng @@DBTS
đối với cơ sở dữ liệu đó, nó sẽ trả về 0x00000000000007D1
(vì đó là số lượng hàng được sử dụng cuối cùng giá trị).
Sau đó, nếu tôi cập nhật hàng đó, thì chuyển đổi hàng của nó cột sẽ trở thành 0x00000000000007D2
. Điều này đúng, ngay cả khi thao tác cập nhật không thực sự thay đổi bất kỳ dữ liệu nào. Lần này, nếu tôi chạy @@DBTS
nó sẽ trả về 0x00000000000007D2
.
Để có một ví dụ minh họa điều này, hãy xem “rowversion” trong SQL Server là gì.
Dấu thời gian kiểu dữ liệu thực sự là một từ đồng nghĩa với rowversion , vì vậy giá trị được trả về bởi @@DBTS
phản ánh lộn xộn hiện tại đánh giá xem nó có được tăng lên bởi một đảo ngược không cột hoặc dấu thời gian cột.
Cũng lưu ý rằng dấu thời gian là một trong bốn kiểu dữ liệu không dùng nữa đang ở chế độ bảo trì và có thể bị xóa trong phiên bản SQL Server trong tương lai. Do đó, bạn nên sử dụng chuyển đổi hàng hóa thay vì dấu thời gian trong công việc phát triển mới. Bạn cũng nên có kế hoạch sửa đổi các ứng dụng hiện đang sử dụng dấu thời gian .