0

我有一个成员表,其中记录在多个地方使用(超过 10 个表)。所有引用的约束。

到目前为止,我看到了 SQL 引擎遇到约束的第一个地方(来自我尝试删除记录时的错误消息 547)。找出所有使用我要删除的记录的地方真的很方便。

4

1 回答 1

0

SQL 数据库管理系统通常不公开该功能。对于由数百个外键引用的表,识别并返回每一个可能的违规行为将比仅返回第一个违规行为要昂贵得多。

可以编写一个存储过程

  • 读取系统表的外键约束,
  • 忽略具有 的 FK 约束on delete cascade
  • 检查每个引用表的 FK 值,以防止删除行,以及
  • 返回那些表名(或约束名,或表名和列名,或表名以及导致失败的操作类型 - 不管)。

但这听起来像你得到的很多工作。可能有更好的方法来解决这类问题。(比试图找出所有可能的 FK 约束失败要好。)

于 2013-01-18T12:44:56.460 回答