2

我正在使用带有mmse的sql server express 2008。 我已经设置了表之间的外键约束,并将on delete约束条件设置为“set null”。 然而,它似乎没有强制约束,我留在现在删除行的字段中的ID。SQL Server外键“On Delete Set Null”约束不起作用

这里是一个小screen sho吨如何我有它设置

其中可我是想错了?

Table 1Table 2

+0

你刚刚设置了这个吗?如果是的话,你按SSMS保存?看来FK约束必须被禁用或根本不存在,如果它给你留下一个孤行。否则,你可以编写完整的DDL为两个表涉及? – 2011-01-25 15:33:36

+0

是的。我保存并使用了VStudio,并将架构传递给Designer。但仍然不起作用。无论是在SSMS中进行删除还是通过VStudio进行编程。 – BastanteCaro 2011-01-25 15:43:41

回答

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 [email protected] 
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'