0

従来の Sql サーバー データベースを継承したので、FK がないものもあれば整数列だけのものもあることに基づいて、外部キーのないすべての整数列をテーブルごとにリストしたいと思います。この情報を表示するためのクエリを提案できる人はいますか? 明らかに、ここには人間の介入が含まれています。

ありがとう。

4

2 に答える 2

3

information_schema から取得できます。私は次のようなことから始めます:

SELECT * from INFORMATION_SCHEMA.COLUMNS c
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k 
ON 
    c.TABLE_CATALOG = k.TABLE_CATALOG
    AND c.TABLE_SCHEMA = k.TABLE_SCHEMA
    AND c.TABLE_NAME = k.TABLE_NAME 
    AND c.COLUMN_NAME = k.COLUMN_NAME
WHERE c.DATA_TYPE in ('int') AND CONSTRAINT_NAME is null
于 2012-11-16T17:10:29.353 に答える
0

これは、SQL サーバーのみのビューを使用します。

select so.name as TableName, col.name as ColumnName
from 
    sys.objects so
        inner join sys.columns col on so.object_id = col.object_id and col.system_type_id in (48,52,56,127)
        left outer join sys.foreign_key_columns fkc on fkc.parent_object_id = so.object_id and fkc.parent_column_id = col.column_id
where 
    so.type='U'
    and fkc.constraint_column_id is null
order by so.name
于 2012-11-16T17:18:38.983 に答える