在fk表中添加具有未链接值的关系



我正试图在数据库中的约会表和中心表之间建立关系。

该系统的一个怪癖是,如果用户所在的区域没有记录中心,它仍然必须允许记录预约。在这种情况下,链接的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

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

理想情况下,我希望这种关系能起作用,但由于Centres表上的centrid列有IDENTITY_INSERT ON,我认为这不会起作用。

我能想到另外两种选择,但它们并不理想,所以如果可能的话,我想让它发挥作用。

有人能帮我吗?

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

我认为将FK设置为列上可能具有不存在的引用ID的记录不是一个好主意!(您有ID为0的中心吗?)

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

2:创建一个具有特殊ID(如ID)的"管理员"记录,该ID可以支持此引用

3:在最后一种情况下,您可以尝试在该表上使用Delete触发器,使其"手动",但我不建议使用该解决方案。

最新更新