我有一个带有地址实体的关系数据库,该实体应该有一个父地址或一个父单元,但不能同时具有这两者。目前,架构是具有 ParentUnitID 字段和 ParentAddressID 字段的地址。有没有办法改变这一点,防止地址同时具有父地址和父单元,但保留外键约束?
问问题
81 次
1 回答
0
FOREIGN KEY 不会对 NULL 值强制执行,因此您只需要确保其中只有一个是非 NULL 的:
CHECK (
(ParentUnitID IS NOT NULL AND ParentAddressID IS NULL)
OR (ParentUnitID IS NULL AND ParentAddressID IS NOT NULL)
)
如果您碰巧使用 MySQL,则需要将其实现为触发器,因为 MySQL不强制执行 CHECK 约束。
或者,您可以使用继承,如此处所述。
于 2013-10-10T09:56:05.050 回答