2

我正在尝试在我的数据库中的 Appointments 表和 Centers 表之间建立关系。

该系统的一个怪癖是,如果用户区域中没有记录中心,它仍然必须允许记录约会。在这种情况下,链接centreid将具有 0 值。

这意味着我收到以下错误:

ALTER TABLE 语句与 FOREIGN KEY 约束“fk_appointments_centres”冲突。

我用来创建关系的代码如下:

alter table appointments
add constraint fk_appointments_centres
foreign key (centreid)
references centres(centreid)
on delete cascade
go

这是非常重要的,因为客户想要从系统中删除中心的功能,在这种情况下,为了正确维护数据,如果中心被删除,它还​​应该删除中心的约会。

理想情况下,我希望这种关系能够奏效,但由于 Centers 表上的 centerid 列具有IDENTITY_INSERT ON,我认为这不会奏效。

我可以想到其他 2 个选项,但它们并不理想,所以如果可能的话,我想让它工作。

谁能帮我吗?

编辑
我刚刚在 MSDN 上看到有人建议不要验证现有数据。这似乎可行,但这将如何影响未来的数据输入?参考这里

4

1 回答 1

0

我认为将 FK 设置为可能具有不存在的参考 ID 的列上的记录不是一个好主意!(你有一个 ID 为 0 的中心到哪里参考吗?)

1:您应该尝试使用 NULL 而不是使用 0。因为那样F​​K就可以工作了。

2:使用可以支持此引用的特殊 ID(如 ID)创建“管理员”记录

3:在最后一种情况下,您可以尝试在该表上使用 Delete 触发器以“手动”进行操作,但我不推荐该解决方案。

于 2012-09-04T07:56:31.360 回答