级联删除的 SQL 输出

标签 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]

如果有两个家庭,总共有 3 名成员,则结果应如下所示:

[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. 选择要删除到表变量中的族 ID。
  2. 删除/输出与表变量内连接的族成员。
  3. 删除/输出与表变量内连接的族。

关于级联删除的 SQL 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3938459/

相关文章:

mysql - 加入具有不同条件的不同表

c# - 扩展 Entity Framework 以存储有关查询的信息

Django 1.2 PostgreSQL 使用 ON DELETE NO ACTION 级联删除键

mysql - 具有多个模式的 mysql 更新时的软删除

sql - 使用 SQL 语句检测案例

sql - 复制功能

php - 将请求的ID发送到PHP

mysql - 请帮我解决我正在尝试编写的sql查询

mysql - 我不能在sql delete中使用别名

Mysql trigger on Delete to multiple tables (同样报错1235)