3

私は SQL Server を扱っていて、もしよろしければ、ちょっとした「振り返り」をしようとしています。sys.identity_columnsすべてのテーブルのすべての ID 列を含むシステム ビューを見つけました。

ただし、ID 列ではない主キーに関する情報を選択できるようにする必要があります。すべての主キーと主キーのみに関するデータを含むビューはありますか? そうでない場合、他にどのようにこのデータを取得できますか?

4

4 に答える 4

7

これは、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
于 2010-09-19T23:01:05.103 に答える
3
SELECT name FROM sys.key_constraints WHERE type = 'PK';
SELECT name FROM sys.key_constraints WHERE type = 'UQ';
于 2010-09-21T08:17:17.927 に答える
1

質問が既に回答済みとしてマークされていることは承知していますが、実際の主キー インデックスをテーブルの列に関連付けるためにクエリに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'
于 2014-04-11T14:55:08.013 に答える
1

これを試して...

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
于 2014-04-12T06:50:36.357 に答える