外键约束

时间:2012-02-09 03:37:28

标签: sql-server tsql

我有一个包含以下列的表。

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

因此,主键包含在表中作为主键。如果删除主键,我想这样做,自动删除包含主键的行作为外键。 (例如:当我删除I​​D 1行时,我想自动删除ID 3,4,5行。)。如何将主键作为外键包含在表中?我怎样才能做到这一点。感谢。

3 个答案:

答案 0 :(得分:3)

您需要实现执行“级联删除”的“触发器”。

这是一个很好的链接:

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

以下是其他一些选择:

http://www.mssqltips.com/sqlservertip/1508/foreign-key-vs-trigger-referential-integrity-in-sql-server/

以下是Microsoft关于“级联参照完整性约束”文档的链接:

http://msdn.microsoft.com/en-us/library/ms186973.aspx

答案 1 :(得分:1)

注意:在Microsoft SQL中,不允许对自引用表进行级联删除。您必须使用触发器,创建存储过程或处理来自调用应用程序的级联删除。这方面的一个示例是,单个表具有ID作为标识,而ParentID与同一表中的ID具有关系。

see here

答案 2 :(得分:0)

唯一的方法是添加触发器,您可以参考以下链接获取更多信息。

http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/b777ec73-e168-4153-a669-835049a96520

another link