删除外键子记录错误547

时间:2012-04-27 07:41:49

标签: sql tsql sql-server-2005

我有一个表Task,其中TaskId为主键。另一个表TimeSheetTaskId作为外键。我创建了这样的外键关系

ALTER TABLE TimeSheet ADD CONSTRAINT fk_TimeSheet_TaskId FOREIGN KEY(TaskId)
REFERENCES Task (TaskId)
GO

实际上,如果我尝试删除(或更新)任务表中的一行,它应该显示有关外键关系的错误。如果我尝试在TimeSheet表中删除,我不应该收到任何错误。

但对我来说,如果我尝试在TimeSheet表中删除或更新,我会收到547错误。 外键列(TaskId表中的TimeSheet)允许空值。

我该怎么办?如果我尝试在父表(Task)中删除或更新,我想抛出错误,如果我尝试在子表(TimeSheet)中删除或更新,则无错误。

1 个答案:

答案 0 :(得分:0)

如果我们使用FOREIGN KEY:

每当删除(引用)表中的主(引用)表中的行时,具有匹配外键列的子(引用)表的相应行也将被删除(分别更新)。不是反之亦然。

如果您想按照您的问题工作,请尝试使用触发器。