SQL Server外键“On Delete Set Null”约束不起作用

时间:2011-01-25 15:31:39

标签: null constraints sql-server-express foreign-key-relationship cascading-deletes

我正在使用mmse的sql server express 2008。 我已经在表之间设置了外键约束,并将on delete约束设置为“set null”。 但它似乎没有强制执行约束,我在现在删除的行的字段中留下了ID。

这里有一个很小的screen sho t我如何设置

我哪里可能出错?

Table 1 Table 2

1 个答案:

答案 0 :(得分:3)

你发布的DDL对我来说很好。

declare @id int;
INSERT INTO DeliveryAreas(Description,Rate) VALUES ('To Delete', 100)
set @id=SCOPE_IDENTITY()
INSERT INTO Customer(FName,DeliveryAreaID) VALUES ('Test',@id)
SELECT ID,FName,DeliveryAreaID FROM Customer
DELETE FROM DeliveryAreas WHERE ID=@id
SELECT ID,FName,DeliveryAreaID FROM Customer

返回

ID          FName                          DeliveryAreaID
----------- ------------------------------ --------------
1           Test                           3


ID          FName                          DeliveryAreaID
----------- ------------------------------ --------------
1           Test                           NULL

您可以仔细检查一下您的已启用状态吗?

SELECT is_disabled,* FROM sys.foreign_keys where name='FK_Customer_DeliveryAreas'