自動インクリメント識別子を持たないデータベース内のすべてのテーブルですべての主キーを検索する方法。大量のテーブルがあり、主キーに自動インクリメント識別子がないすべてのテーブルを識別したいと思います。
質問する
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')
これにより、列を持つ1つのデータベース内のすべてのテーブルが検索され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フィドルでは、サンプルテーブルのそれぞれの列に「PRI」と「auto_increment」があることがわかります。
于 2013-03-19T13:59:44.277 に答える