外键约束
问题描述:
我有一个包含以下列的表。外键约束
ID int PK
Name nvarchar(50) NotNull
FID int FK reference to ID
ID Name PK
1 A Null
2 B Null
3 C 1
4 D 1
5 E 1
6 F 2
所以,主键包括作为表中的主键。我想这样做,如果主键被删除,包含主键作为外部的行将被自动删除。 (例如:当我删除ID 1行时,我想自动删除ID 3,4,5行)。如何使主键作为外键包含在表中?我怎样才能做到这一点。谢谢。
答
您需要实施“级联删除”的“触发器”。
这里有一个很好的链接:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=142564
CREATE TRIGGER test_trig
ON dbo.Table_1
FOR DELETE
AS
BEGIN
delete a from dbo.Table_2 a
JOIN
deleted d
ON a.joincol = d.joincol
END
这里有一些其他的替代品:
这里是微软的文档的链接上的“层叠参照完整性约束“:
答
注意:在Microsoft SQL中,不允许对自引用表进行级联删除。您必须使用触发器,创建存储过程或处理调用应用程序中的级联删除。其中一个例子是单个表中有一个ID作为标识,而ParentID与同一个表中的ID有关系。
答
的唯一方法是添加一个触发器,你可以参考有关更多信息,以下链接。