Bạn có thể sử dụng T-SQL để trả về danh sách các cột nhận dạng trong cơ sở dữ liệu trong SQL Server.
Bạn có thể thực hiện việc này bằng cách sử dụng sys.identity_columns
chế độ xem danh mục hệ thống.
Ví dụ 1 - Cách sử dụng cơ bản
Đây là một ví dụ để chứng minh.
USE Test; SELECT OBJECT_NAME(object_id) AS [object], name, seed_value, increment_value, last_value, is_not_for_replication FROM sys.identity_columns;
Kết quả:
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+ | object | name | seed_value | increment_value | last_value | is_not_for_replication | |---------------------------+------------------+--------------+-------------------+--------------+--------------------------| | ConstraintTest | ConstraintTestId | 1 | 1 | 17 | 0 | | sqlagent_job_history | instance_id | 1 | 1 | NULL | 0 | | sqlagent_jobsteps_logs | log_id | 1 | 1 | NULL | 0 | | Cats | id | 1 | 1 | 2 | 0 | | Dogs | id | 1 | 1 | 1 | 0 | | t1 | id | 1 | 1 | 2 | 0 | | t2 | id | 150 | 10 | 160 | 0 | | scope_identity_test | id | 1 | 1 | 3 | 0 | | Event | EventId | 1 | 1 | NULL | 0 | | Scoreboard | ScoreId | 1 | 1 | 8 | 0 | | Pets | PetId | 1 | 1 | 5 | 0 | | BestFriends | pet_id | 101 | 10 | 121 | 0 | | Cities | CityId | 150 | 10 | 180 | 0 | | Colors | ColorId | 1 | 1 | 6 | 0 | | queue_messages_1977058079 | queuing_order | 0 | 1 | NULL | 0 | | t6 | id | 1 | 1 | 1 | 0 | | t7 | id | 100 | 1 | 100 | 0 | | queue_messages_2009058193 | queuing_order | 0 | 1 | NULL | 0 | | queue_messages_2041058307 | queuing_order | 0 | 1 | NULL | 0 | +---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
Tôi đã sử dụng Test
của mình cơ sở dữ liệu cho ví dụ này. Tôi chọn cái này vì trước đây tôi đã tạo các cột nhận dạng với nhiều giá trị gia tăng gốc khác nhau.
Trong ví dụ này, tôi đã sử dụng OBJECT_NAME()
hàm lấy tên của đối tượng từ object_id
cột. Trong trường hợp này, đó là tên bảng. Vì vậy, nói cách khác, cột đầu tiên liệt kê tên bảng và cột thứ hai liệt kê cột nhận dạng.
Ví dụ 2 - Liệt kê Tất cả Các Cột
Trong ví dụ trước, tôi chỉ trả về một số ít cột. Điều này là do sys.identity_columns
trả về rất nhiều cột.
Trong ví dụ này, tôi chỉ trả về một cột nhận dạng (tức là một hàng), nhưng tôi trả về tất cả các cột cho hàng đó. Tôi sử dụng đầu ra dọc khi hiển thị kết quả để bạn không bị buộc phải cuộn sang ngang.
SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'Cities';
Kết quả (sử dụng đầu ra dọc):
object_id | 1970106059 name | CityId column_id | 1 system_type_id | 56 user_type_id | 56 max_length | 4 precision | 10 scale | 0 collation_name | NULL is_nullable | 0 is_ansi_padded | 0 is_rowguidcol | 0 is_identity | 1 is_filestream | 0 is_replicated | 0 is_non_sql_subscribed | 0 is_merge_published | 0 is_dts_replicated | 0 is_xml_document | 0 xml_collection_id | 0 default_object_id | 0 rule_object_id | 0 seed_value | 150 increment_value | 10 last_value | 180 is_not_for_replication | 0 is_computed | 0 is_sparse | 0 is_column_set | 0 generated_always_type | 0 generated_always_type_desc | NOT_APPLICABLE encryption_type | NULL encryption_type_desc | NULL encryption_algorithm_name | NULL column_encryption_key_id | NULL column_encryption_key_database_name | NULL is_hidden | 0 is_masked | 0 graph_type | NULL graph_type_desc | NULL
Hầu hết các cột này được kế thừa từ sys.columns
, nhưng một số là duy nhất đối với các cột sys.identity columns
. Để có mô tả chi tiết về các cột này, hãy xem tài liệu của Microsoft về sys.columns
và cột sys.identity columns
.
Bao gồm Bảng &Lược đồ
Bạn có thể nhận thấy rằng những ví dụ này không bao gồm lược đồ trong tập kết quả. Xem Bao gồm Bảng &Lược đồ khi Liệt kê các Cột Nhận dạng nếu bạn cần trả về lược đồ. Bài viết đó cũng bao gồm một ví dụ về việc xóa các bảng nội bộ khỏi kết quả.