我有一个表(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'?
感谢您提出任何建议。
答案 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以首先删除它们。