我有一个表Task
,其中TaskId
为主键。另一个表TimeSheet
以TaskId
作为外键。我创建了这样的外键关系
ALTER TABLE TimeSheet ADD CONSTRAINT fk_TimeSheet_TaskId FOREIGN KEY(TaskId)
REFERENCES Task (TaskId)
GO
实际上,如果我尝试删除(或更新)任务表中的一行,它应该显示有关外键关系的错误。如果我尝试在TimeSheet
表中删除,我不应该收到任何错误。
但对我来说,如果我尝试在TimeSheet
表中删除或更新,我会收到547错误。
外键列(TaskId
表中的TimeSheet
)允许空值。
我该怎么办?如果我尝试在父表(Task
)中删除或更新,我想抛出错误,如果我尝试在子表(TimeSheet
)中删除或更新,则无错误。
答案 0 :(得分:0)
如果我们使用FOREIGN KEY:
每当删除(引用)表中的主(引用)表中的行时,具有匹配外键列的子(引用)表的相应行也将被删除(分别更新)。不是反之亦然。
如果您想按照您的问题工作,请尝试使用触发器。