$IDENTITY
(và $ROWGUID
) được ghi lại trong Điều khoản CHỌN (Transact-SQL) .
Tôi sẽ thận trọng khi sử dụng nó vì nó sẽ gây ra lỗi khi bảng không có cột nhận dạng. Lấy hai ví dụ này - cái đầu tiên hoạt động (kiểm tra tab Kết quả của bạn), nhưng cái thứ hai sẽ báo lỗi:
CREATE TABLE #EmployeesWithIdentity (EmployeeID INT IDENTITY(1,1), EmployeeName VARCHAR(50));
SELECT $IDENTITY FROM #EmployeesWithIdentity;
GO
CREATE TABLE #Employees (EmployeeName VARCHAR(50));
SELECT $IDENTITY FROM #Employees;
GO
Đây là thứ thứ hai tạo ra:
Msg 207, Level 16, State 1, Line 6
Invalid column name '$IDENTITY'.
Nếu bạn đang tìm kiếm cột nào có trường nhận dạng, tôi sẽ sử dụng phương pháp được mô tả trong bài viết Stack Overflow này thay thế:
select COLUMN_NAME, TABLE_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = 'dbo'
and COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1
order by TABLE_NAME
Hoặc, sử dụng chế độ xem danh mục:
SELECT s.name,t.name,c.name
FROM sys.schemas AS s
JOIN sys.tables AS t ON s.[schema_id] = t.[schema_id]
JOIN sys.identity_columns AS c ON t.[object_id] = c.[object_id];