级联删除时的SQL输出

时间:2010-10-14 23:52:52

标签: sql sql-delete cascading-deletes

是否可以从SQL中的级联删除输出值?

类似的东西:

DELETE [Families]
    OUTPUT [deleted].[FamilyID] [deleted].[FamilyName], [Members].[MemberName]
    FROM [Families]
    LEFT JOIN [Members]
        ON [Members].[FamilyID] = [Families].[FamilyID]

如果有两个家庭有三个总成员,它应该产生类似的东西:

[FamilyID]   [FamilyName]   [MemberName]
 12           'Family A'     'Member 1'
 12           'Family A'     'Member 2'
 13           'Family B'     'Member 3'

对于解决方案,每个系列产生1行,并且在分隔列表中使用级联删除的成员也是可以接受的。类似的东西:

[FamilyID]   [FamilyName]   [MemberNames]
 12           'Family A'     'Member 1|Member 2'
 13           'Family B'     'Member 3'

1 个答案:

答案 0 :(得分:2)

我能找到的最佳解决方案产生两个结果集:

  1. 选择要删除的族的ID到表变量中。
  2. 删除/输出与表变量内连接的族成员。
  3. 根据表变量删除/输出内部连接的族。