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

Sử dụng IDENT_CURRENT () để trả lại giá trị nhận dạng hiện tại trên cột nhận dạng trong SQL Server

Trong SQL Server, bạn có thể sử dụng T-SQL IDENT_CURRENT() hàm để trả về giá trị nhận dạng cuối cùng được tạo cho một bảng hoặc chế độ xem được chỉ định trên cột nhận dạng. Giá trị nhận dạng cuối cùng được tạo có thể dành cho bất kỳ phiên nào và bất kỳ phạm vi nào.

Cú pháp

Cú pháp như sau:

IDENT_CURRENT( 'table_or_view' )

table_or_view đối số là tên của bảng hoặc chế độ xem có giá trị nhận dạng được trả về.

Ví dụ 1 - Cách sử dụng cơ bản

Đây là một ví dụ mã cơ bản.

SELECT IDENT_CURRENT('Pets') AS Result;

Kết quả:

+----------+
| Result   |
|----------|
| 3        |
+----------+

Trong trường hợp này, giá trị nhận dạng hiện tại là 3.

Đây là một truy vấn khác kiểm tra nhiều bảng hơn.

SELECT 
  IDENT_CURRENT('Pets') AS Pets,
  IDENT_CURRENT('BestFriends') AS BestFriends,
  IDENT_CURRENT('Cities') AS Cities;

Kết quả:

+--------+---------------+----------+
| Pets   | BestFriends   | Cities   |
|--------+---------------+----------|
| 3      | 121           | 180      |
+--------+---------------+----------+

Ví dụ 2 - Bao gồm Lược đồ

Bạn cũng có thể đưa lược đồ vào đối số.

SELECT IDENT_CURRENT('dbo.Pets') AS Result;

Kết quả:

+----------+
| Result   |
|----------|
| 3        |
+----------+

Ví dụ 3 - Sau một Chèn

Trong ví dụ này, tôi chèn thêm hai hàng vào Thú cưng bảng, sau đó chọn IDENT_CURRENT() một lần nữa.

INSERT INTO Pets (PetName)
VALUES ('Brian'), ('Alf');

SELECT IDENT_CURRENT('dbo.Pets') AS Result;

Kết quả:

+----------+
| Result   |
|----------|
| 5        |
+----------+

Đây là bảng trông như thế nào:

SELECT * FROM Pets;

Kết quả:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Homer     |
| 2       | Felix     |
| 3       | Ruff      |
| 4       | Brian     |
| 5       | Alf       |
+---------+-----------+

PetId cột là cột nhận dạng. Giá trị gốc của nó là 1 và giá trị gia tăng của nó cũng là 1.

Xem Cách sử dụng Thuộc tính IDENTITY () trong SQL Server để biết mã được sử dụng để tạo bảng này.

Ví dụ 4 - Kiểm tra Tất cả các Bảng trong Cơ sở dữ liệu

Dưới đây là một ví dụ về việc kiểm tra tất cả các bảng trong cơ sở dữ liệu để tìm giá trị gốc nhận dạng của chúng.

SELECT 
  TABLE_SCHEMA, 
  TABLE_NAME,   
  IDENT_CURRENT(TABLE_SCHEMA + '.' + TABLE_NAME) AS IDENT_CURRENT  
FROM INFORMATION_SCHEMA.TABLES  
WHERE IDENT_CURRENT(TABLE_SCHEMA + '.' + TABLE_NAME) IS NOT NULL;

Kết quả:

+----------------+----------------+-----------------+
| TABLE_SCHEMA   | TABLE_NAME     | IDENT_CURRENT   |
|----------------+----------------+-----------------|
| dbo            | ConstraintTest | 17              |
| dbo            | Event          | 1               |
| dbo            | Scoreboard     | 8               |
| dbo            | Pets           | 5               |
| dbo            | BestFriends    | 121             |
| dbo            | Cities         | 180             |
| dbo            | Colors         | 6               |
| dbo            | t6             | 1               |
| dbo            | t7             | 100             |
+----------------+----------------+-----------------+

Giới thiệu về Giá trị Trả lại

Giá trị trả về cho IDENT_CURRENT()numeric(@@MAXPRECISION,0)) . Điều này có nghĩa là đó là kiểu dữ liệu số với độ chính xác và tỷ lệ cố định.

Độ chính xác phụ thuộc vào máy chủ. @@MAXPRECISION đối số trả về mức được sử dụng bởi các kiểu dữ liệu thập phân và số như hiện được đặt trong máy chủ. Độ chính xác chỉ định tổng số chữ số thập phân tối đa (bao gồm các chữ số ở bên trái và bên phải của dấu thập phân).

Đối số thứ hai chỉ định tỷ lệ 0 , có nghĩa là không có chữ số thập phân nào ở bên phải của vị trí thập phân.

Bạn có thể chạy truy vấn sau để tìm mức độ chính xác hiện được đặt trên máy chủ của mình:

SELECT @@MAX_PRECISION AS [Max Precision];

Đây là kết quả trên hệ thống của tôi:

+-----------------+
| Max Precision   |
|-----------------|
| 38              |
+-----------------+

Tạo cột nhận dạng

Bạn có thể tạo cột nhận dạng bằng cách sử dụng IDENTITY() trong CREATE TABLE của bạn hoặc ALTER TABLE tuyên bố.

Một cách khác để tạo cột nhận dạng là IDENTITY() hàm số. Điều này cho phép bạn tạo cột nhận dạng khi sử dụng SELECT INTO để chuyển dữ liệu từ nguồn này sang nguồn khác.

Sự khác biệt với @@ IDENTITY và SCOPE_IDENTITY ()

IDENT_CURRENT() chức năng tương tự như @@IDENTITYSCOPE_IDENTITY() , nhưng có một số khác biệt.

@@IDENTITYSCOPE_IDENTITY() trả lại giá trị nhận dạng cuối cùng được tạo trong bất kỳ bảng trong phiên hiện tại. Tuy nhiên, sự khác biệt giữa hai hàm này là SCOPE_IDENTITY chỉ trả về giá trị trong phạm vi hiện tại, trong khi @@IDENTITY không giới hạn trong một phạm vi cụ thể.

IDENT_CURRENT() mặt khác, không bị giới hạn bởi phạm vi hoặc phiên họp. Đúng hơn, nó được giới hạn trong một bảng được chỉ định . Nó trả về giá trị nhận dạng được tạo cho một bảng cụ thể trong bất kỳ phiên nào và bất kỳ phạm vi nào.

Xem IDENT_CURRENT so với @@ IDENTITY và SCOPE_IDENTITY trong SQL Server:Sự khác biệt là gì? cho một ví dụ đơn giản về sự khác biệt giữa ba chức năng này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các ký tự không phải số trả về số dương khi sử dụng ISNUMERIC () trong SQL Server

  2. Cách nhanh nhất để chèn hàng loạt dữ liệu vào SQL Server (máy khách C #)

  3. Hiệu suất máy chủ SQL TOP IO Truy vấn -1

  4. Cách tốt nhất để triển khai Hiệp hội đa hình trong SQL Server là gì?

  5. Lỗi SQL:Cú pháp không chính xác gần từ khóa 'Người dùng'