动态查找带有主键的表
Posted
技术标签:
【中文标题】动态查找带有主键的表【英文标题】:Dynamically find tables with primary keys 【发布时间】:2016-09-16 12:16:46 【问题描述】:我需要一个脚本来帮助我查找具有主键的表,而无需指定数据库名称或表名称。
【问题讨论】:
也许很有趣? Understanding the mysql Information Schema Database。另外:Chapter 22 INFORMATION_SCHEMA Tables,imo,您只需编写 SQL 查询即可找出您想要的。 【参考方案1】:select
t.table_schema,t.table_name
from
information_schema.tables t
inner join information_schema .columns c
on t.table_schema=c.table_schema and t.table_name=c.table_name
group by
t.table_schema,t.table_name
having
sum(if(column_key in ('PRI','UNI'), 1,0)) =1;
这行得通。
【讨论】:
【参考方案2】:对于 MySQL,每个主键总是有一个名为“PRIMARY”的约束。所以很容易找到它们:
SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_NAME = 'PRIMARY';
【讨论】:
以上是关于动态查找带有主键的表的主要内容,如果未能解决你的问题,请参考以下文章