0

假设我有“表 A”:

Id | Col A
1    Z
2    I
3    Null

...和 ​​n 个具有这种格式的表:

Id | A_FK | OtherInfo
1    1      "Some info"
2    2      "Some more info"
3    3      "Blah"

...其中 A_FK 是对“表 A”ID 的外键引用。

所以有一个“表A”和n个“表B”。对于这些“B”表,其中一些可以具有 A_FK 的任何现有值(不需要约束)。其他“B”表只能引用 A_FK 值,其中对应的记录在 Col A 中没有 Null 值。

所以我的问题是:

  1. 我将如何编写一个约束来解决这个问题(我想这是一个非常简单的约束,我只是从来没有写过一个而且我感觉有点懒惰)?
  2. 约束是否反向起作用?假设我在“B”表中输入了一条记录,它链接到表 A 的 Id = 1(表 B 有约束)。这很好,因为表 A 的 1 = "Z" 的列 A。如果我稍后尝试将“Z”更改为 Null,会出现错误吗?

提前致谢。

4

1 回答 1

2

在TableA中,在(ID, ColA)上创建唯一约束,在“对应的记录在Col A中没有Null值”的表中,添加ColA列,确保它不为NULL,并且有一个FK约束是指 TableA 中的唯一约束。

这回答了你的两个问题。

于 2010-09-16T19:24:11.553 回答