簡體   English   中英

如何確定復合鍵中的列位置

[英]How do I determine the column position in a compound key

我需要確定數據庫中的所有主鍵。 以下代碼似乎可以很好地完成此工作:

SELECT i.name AS IndexName,
   OBJECT_NAME (ic.OBJECT_ID) AS TableName,
   COL_NAME (ic.OBJECT_ID, ic.column_id) AS ColumnName
FROM sys.indexes AS i
   INNER JOIN sys.index_columns AS ic
      ON i.OBJECT_ID = ic.OBJECT_ID AND i.index_id = ic.index_id
WHERE i.is_primary_key = 1

我的問題是某些鍵是復合鍵。 此查詢標識哪些鍵是復合鍵(sys.indexes表中特定indexName的多行),但未顯示順序。 我需要知道這一點,因為:

PRIMARY KEY CLUSTERED 
(
[bl_id] ASC,
[fl_id] ASC,
[rm_id] ASC
)

與以下內容不同:

PRIMARY KEY CLUSTERED 
(
[rm_id] ASC
[fl_id] ASC,
[bl_id] ASC,

key_ordinal似乎可以解決問題:

SELECT i.name AS IndexName,
   OBJECT_NAME (ic.OBJECT_ID) AS TableName,
   COL_NAME (ic.OBJECT_ID, ic.column_id) AS ColumnName,
   ic.Key_ordinal as ColumnOrder
FROM sys.indexes AS i
   INNER JOIN sys.index_columns AS ic
      ON i.OBJECT_ID = ic.OBJECT_ID AND i.index_id = ic.index_id
WHERE i.is_primary_key = 1
ORDER BY ic.OBJECT_ID, ic.Key_ordinal

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM