有没有办法显示由于参照完整性而阻止删除的记录?

时间:2011-01-04 00:11:14

标签: c# .net sql-server

我的应用程序遍布一般问题,想知道是否有一种通用的解决方法。

主要问题是当您尝试从已连接的表中删除记录时,如何让用户知道哪些记录已链接。

例如,假设我有两个数据库表。

  1. 客户
  2. 其中Customer有一个branchId字段。

    如果我从分支表中删除一条记录,如果有客户在其外键中有该branchId,它将失败。

    如果我试图通过代码删除它,我得到一个错误,说它不能删除,因为一个参考完整性约束,但它不让我知道实际链接表是什么或哪些特定记录导致链接。

    是否存在处理这种情况的通用C#代码:

    1. 返回更好的错误消息并显示链接记录
    2. 更好的是,允许您将当时的链接记录更改为默认引用或空引用(在外键可以为空的情况下)

1 个答案:

答案 0 :(得分:1)

您可以考虑在Branch表上创建一个触发器,该触发器将引用将要删除的Customer记录的任何Branch记录设置为BranchId = null。

这应该允许您删除分支并删除现有客户的任何关联。

Here is an article可以解决类似问题。

请注意,如果您在不知情的情况下开始更改数据,您可能会遇到一些困惑的客户......