2

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

这是我如何设置的小屏幕截图

我哪里出错了?

表 1 表 2

4

1 回答 1

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'
于 2011-01-25T17:15:44.243 回答