继承了旧的 Sql 服务器数据库后,我想按表列出所有没有外键的整数列,因为有些会缺少 FK,有些只是整数列。任何人都可以建议查询来显示此信息吗?显然这里涉及到一些人为干预。
谢谢。
继承了旧的 Sql 服务器数据库后,我想按表列出所有没有外键的整数列,因为有些会缺少 FK,有些只是整数列。任何人都可以建议查询来显示此信息吗?显然这里涉及到一些人为干预。
谢谢。
您可以从 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
这个使用 sql-server-only 视图:
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