检查所有外键的使用位置

时间:2011-01-08 14:26:27

标签: c# asp.net sql-server

假设有一个表Table1,其主键为“MainID”,并且此MainID在许多表中用作外键。

现在,当我尝试从Table1删除某个子表中正在使用MainID作为外键的记录时,它会抛出“外键冲突n”的异常。

现在我想设计我的Delete Strored过程,首先检查具有该外键列“MainID”的所有子项,如果Table1中的MainID正在任何子表中使用它应该返回0。根据这个0值,我想要一个警告框,显示会说“仍然在使用或使用watever”,并且不会让用户删除该记录,除非子表中的所有记录都已被删除,并且正在使用来自table1的那个mainID。

我无法使用ON DELETE CASCADE。我希望用户逐个手动删除子表记录。只有在删除了使用MainID的子表记录后,用户才能从Table1中删除记录

1 个答案:

答案 0 :(得分:2)

我会考虑使用TRY / CATCH(在c#或SQL Server中)来捕获正确的SQL错误号。

直接钻入系统表并找到链接,然后对每个子表进行一次动态查询。