如何删除FK一对多?

时间:2009-03-16 19:35:58

标签: sql asp.net-membership

我有一个表(aspnet_Membership),其中包含我需要删除的垃圾邮件记录。有一些外键,我正在尝试编写一个简单的SQL语句来删除FK,所以我可以删除主记录。

所以有一个名为'aspnet_UsersInRoles'的表,它有UserID和RoleID,在我的'aspnet_Membership'表中是UserID。我不能删除没有孤立记录的用户(不会因为约束而让我这样做)。

我如何基本上运行以下内容:

'delete from 'aspnet_UsersInRoles' where UserID in 'aspnet_Membership' and 'aspnet_Membership.CreateDate >= '03/15/2009'?

感谢您提出任何建议。

2 个答案:

答案 0 :(得分:4)

好吧,你可能已经设置了外键来进行级联删除,所以你不必担心它,但是你对查询的尝试非常接近可以工作的,只需使用一个子查询:

DELETE FROM aspnet_UsersInRoles WHERE UserID IN (SELECT UserID FROM aspnet_Membership WHERE aspnet_Membership.CreateDate >= '03/15/2009')

答案 1 :(得分:1)

您可以更改约束以在删除时执行级联: link

否则,您可以查看sys.foreign_keys表以使用主键获取所有外键,并自动生成sql以首先删除它们。