编写sql server查询以查看有多少表链接到一个表
如果有申请表、人员表、状态表等 状态和人员有一个指向应用程序的链接 是否可以编写一个简单的sql查询,该查询将给出链接到应用程序表的所有表的列表(与使用数据库关系图不同) 应用程序预期结果:编写sql server查询以查看有多少表链接到一个表,sql,sql-server,Sql,Sql Server,如果有申请表、人员表、状态表等 状态和人员有一个指向应用程序的链接 是否可以编写一个简单的sql查询,该查询将给出链接到应用程序表的所有表的列表(与使用数据库关系图不同) 应用程序预期结果: 地位 人 请建议可行的解决方案(如有)。使用SP\u取决于具体情况。还有其他的方式,就像DMV一样 sp_depends 'TableName' 假设您使用的是MSSQL服务器,则可以运行 EXEC sp_fkeys 'YourTableName' 否则,您可以使用 SELECT * FROM in
- 地位
- 人
请建议可行的解决方案(如有)。使用SP\u取决于具体情况。还有其他的方式,就像DMV一样
sp_depends 'TableName'
假设您使用的是MSSQL服务器,则可以运行
EXEC sp_fkeys 'YourTableName'
否则,您可以使用
SELECT *
FROM information_schema.referential_constraints
WHERE table_name = <tablename>
选择*
来自信息\u模式。参考\u约束
其中,表名称=
要建立外键关系,检查引用到其他表的每个表名的另一种方法是:
SELECT DISTINCT OBJECT_NAME(f.parent_object_id) AS TableName,
OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc
ON f.OBJECT_ID = fc.constraint_object_id
INNER JOIN sys.objects AS o
ON o.OBJECT_ID = fc.referenced_object_id
当然,您可以添加更多条件来检查单个表,例如:
WHERE OBJECT_NAME(f.referenced_object_id) = 'Application'
这会给您带来如下结果:
TableName ReferenceTableName
---------- ------------------
Status Application
Person Application
如果需要外键,可以运行以下命令:EXEC sp_fkeys'TableName'@Kieran:Solution-ideal!可能重复的