簡體   English   中英

SQL Server中是否有僅列出主鍵的視圖?

[英]Is there a view in SQL Server that lists just primary keys?

我正在使用SQL Server並嘗試做一些“反思”,如果你願意的話。 我找到了系統視圖sys.identity_columns ,它包含了我所有表的所有標識列。

但是,我需要能夠選擇有關非標識列的主鍵的信息。 是否有包含所有主鍵和主鍵的數據的視圖? 如果沒有,我怎么能得到這些數據?

這適用於SQL Server 2005及更高版本:

select OBJECT_SCHEMA_NAME(i.object_id), OBJECT_NAME(i.object_id), i.name
from sys.indexes i
where i.is_primary_key = 1
order by 1, 2, 3
SELECT name FROM sys.key_constraints WHERE type = 'PK';
SELECT name FROM sys.key_constraints WHERE type = 'UQ';

我意識到這個問題已被標記為已回答,但是對於某些人來說,如果將sys.index_columns (除了sys.indexes )合並到您的查詢中以便將實際主鍵索引與表的列。 例:

select
    t.Name as tableName
    ,c.name as columnName
    ,case when pk.is_primary_key is not null then 1 else 0 end as isPrimaryKeyColumn
from sys.tables t
inner join sys.columns c on t.object_id = c.object_id
left join sys.index_columns pkCols 
    on t.object_id = pkCols.object_id 
    and c.column_id = pkCols.column_id
left join sys.indexes pk 
    on pkCols.object_id = pk.object_id 
    and pk.is_primary_key = 1
where 
    t.name = 'MyTable'

嘗試這個...

SELECT KC.TABLE_NAME, KC.COLUMN_NAME, KC.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE KC
WHERE OBJECTPROPERTY(OBJECT_ID(KC.CONSTRAINT_NAME), 'IsPrimaryKey') = 1
AND COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 0

暫無
暫無

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

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