2017-01-26 13 views
2

名前がexactly = "ID"の場合、データベースのすべての主キーを取得しようとしています。特定の名前のすべてのプライマリキーを取得するには?

私の目標はリファクタリングのためにすべてのキーを取得することです。私はテーブルinformation_schemaで試したが、自分で目標を達成することはできない。

最もれる好ましい出力は次のようになります。

SCHEMA_NAME  | TABLE_NAME  | PRIMARY_KEY_NAME 
-------------------------------------------------------- 
...    | ...    | ID 
...    | ...    | ID 
...    | ...    | ID 
...    | ...    | ID 
...    | ...    | ID 
...    | ...    | ID 
...    | ...    | ID 

答えて

1

使用INFORMATION_SCHEMA.TABLE_CONSTRAINTS

SELECT SCHEMA_NAME = TABLE_SCHEMA, 
     TABLE_NAME, 
     PRIMARY_KEY_NAME = CONSTRAINT_NAME 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
WHERE CONSTRAINT_TYPE = 'PRIMARY KEY' 
     AND CONSTRAINT_NAME = 'ID' 

または使用sys.key_constraints

SELECT SCHEMA_NAME= s.NAME, 
     TABLE_NAME = Object_name(kc.parent_object_id), 
     PRIMARY_KEY_NAME = kc.NAME 
FROM sys.key_constraints kc 
     JOIN sys.schemas s 
     ON kc.schema_id = s.schema_id 
WHERE type = 'pk' 
     AND kc.NAME = 'ID' 
0
SELECT Col.Column_Name, col.CONSTRAINT_NAME from 
INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab, 
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE Col 
WHERE 
Col.Constraint_Name = Tab.Constraint_Name 
AND Col.Table_Name = Tab.Table_Name 
AND Constraint_Type = 'PRIMARY KEY' 
AND col.CONSTRAINT_NAME like '%adhoc%' 
関連する問題