【问题标题】:Updating, Foreign Key Constraints and nulls更新、外键约束和空值
【发布时间】:2025-11-24 01:15:01
【问题描述】:

我正在用 C# 生成一个数据模板。在这个精彩网站上的好人的帮助下,我已经设法处理了几乎所有问题。这应该是最后一个问题。因为它是我正在处理的模板,所以我想要表中的每个字段,包括空值。我在如何通过添加 (object)this.field 来更新空值方面得到了帮助? DBNull.Value 但我有一个外键字段,即使当我查看数据库时它显示为 null,但当我提取记录时,值变为 0。当我尝试更新此字段时,它说我违反了外键约束。我该如何解决这个问题?我认为 null 解决方案会起作用,但它不会显示为 null,而是显示为 0。

谢谢

【问题讨论】:

    标签: mysql database oracle null foreign-keys


    【解决方案1】:

    0 是否可能是该列的有效值?如果没有,只需在遇到一个时将其类型转换为 null。如果它有效,您仍然可以这样做,方法是将其包装在首先检查外部行是否存在的条件中。

    【讨论】:

      【解决方案2】:

      一般来说,让 FK 为空并不是一个好主意。一些数据库(我知道 oracle 这样做)通过将 FK 绑定到主键而不是其他表中的列来强制执行此操作。您能否重构您的表以使该列不需要空值?

      【讨论】:

      • 很遗憾,没有,因为它们不是我们创建的表,所以我们需要使用我们所拥有的。
      • “我们需要利用我们拥有的东西”......是的,这就是我们生活中的悲伤故事。 :-)