我有一个包含2K +表的数据库。我需要检查一个表中的行是否被任何其他表使用(所有关系都已启动并且正在运行ID)。只有我的想法是
BEGIN TRY
BEGIN TRANSACTION
DELETE dbo.LC147_PlanProracuna WHERE PlanProracunaID = 47
SELECT 1
ROLLBACK
END TRY
BEGIN CATCH
SELECT 0
END CATCH
如何检查表A中的行是否正在数据库中的任何其他表中使用,或者(甚至更好)SQL SERVER如何检查参照完整性(如果可能的话,如何使用相同的方法)?
答案 0 :(得分:2)
如果您正在讨论在表之间找到依赖关系,那么您可以使用sys.dm_sql_referencing_entities
以及
sys.dm_sql_referenced_entities
为此目的。
下面的示例将返回指定数据库中引用LC147_PlanProracuna
表的实体。
SELECT referencing_schema_name,
referencing_entity_name,
referencing_id,
referencing_class_desc,
is_caller_dependent
FROM sys.dm_sql_referencing_entities ('DB_NAME.dbo.LC147_PlanProracuna', 'OBJECT');
您也可以This Article找到帮助。