如何在数据库中的所有表中查找所有主键,这些表没有自动增量标识符。我们有大量的表,并且想识别所有在主键上没有自动增量标识符的表。
问问题
2301 次
2 回答
6
information_schema.columns
您可以从表中提取此信息
select distinct table_name
from information_schema.columns
where table_schema = 'DATABASENAME'
and table_name not in (select table_name
from information_schema.columns
where table_schema = 'DATABASENAME'
and column_key = 'PRI'
and data_type = 'int'
and extra = 'auto_increment')
这将查找一个数据库中具有一auto_increment
列的所有表,然后返回剩余的表。这也可以正确检测具有复合键的表。
于 2013-03-19T13:56:07.740 回答
2
您可以在表格中找到此类信息information_schema.columns
。如果自动递增,该列column_key
将是PRI
并且该列extra
将包含。auto_increment
SELECT
table_schema,
table_name,
column_name
FROM
information_schema.columns
WHERE
column_key = 'PRI'
AND extra <> 'auto_increment'
AND data_type = 'int'
在此 SQL Fiddle中,您可以看到示例表在各自的列中具有“PRI”和“auto_increment”。
于 2013-03-19T13:59:44.277 回答