我目前正在处理一个项目,该项目需要清除一些未使用的字段并对其数据库中的表进行规范化,以使其看起来更好。 其中一个表的字段不是外键(但应该是),所以我不能使用 sp_help 来了解哪些表是相关的。
我目前的任务是删除 IdTipoEspecialidad = 3 的行,前提是没有任何使用此行的表(因为我需要删除这两行)。
是否有一些快捷方式或查询可以让这项工作更轻松?
答案 0 :(得分:2)
假设所有这些非外键列都至少遵循一些命名约定,您可以执行以下查询:
SELECT
'SELECT * FROM [' + schemas.name + '].[' + tables.name + ']'
+ ' WHERE [' + columns.name + '] = 3'
FROM
sys.schemas
INNER JOIN sys.tables
ON schemas.schema_id = tables.schema_id
INNER JOIN sys.columns
ON tables.object_id = columns.object_id
WHERE
columns.name LIKE '%IdTipoEspecialidad%'
该查询的输出将为您提供一堆其他查询,您可以运行这些查询以查看是否有任何列引用该特定行。