简体   繁体   English

如何获取具有特定名称的所有主键?

[英]How to get all primary key with a specific name?

I'm trying to get all primary key of a database when their name are exactly = "ID"我试图获取数据库的所有主键,但它们的名称exactly = "ID"

My goal is to retrieve all of this keys for a refactoring.我的目标是检索所有这些键以进行重构。 I have tried with the table information_schema but cannot achieve my goal by myself.我已经尝试过使用表information_schema但我自己无法实现我的目标。

The most prefered output should be:最喜欢的输出应该是:

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

Use INFORMATION_SCHEMA.TABLE_CONSTRAINTS使用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' 

or use sys.key_constraints或使用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' 
 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%'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM