Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách trả lại giá trị chuyển đổi hàng hiện tại cho cơ sở dữ liệu máy chủ SQL (Ví dụ T-SQL)

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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Biểu diễn khác nhau của UUID trong Java Hibernate và SQL Server

  2. SQL Server:Tìm ra giá trị mặc định của một cột bằng một truy vấn

  3. Cài đặt phiên bản cụm chuyển đổi dự phòng SQL Server - Phần 1

  4. Tôi có thể có khóa ngoại tham chiếu đến một cột trong dạng xem trong SQL Server không?

  5. SQL Server:xoay động trên 5 cột