Вывод SQL при каскадном удалении - PullRequest
3 голосов
/ 15 октября 2010

Можно ли вывести значения из каскадного удаления в 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 Ответ

2 голосов
/ 19 октября 2010

Лучшее решение, которое я смог найти, дает два набора результатов:

  1. Выберите идентификаторы семейств для удаления в табличную переменную.
  2. Удаление / вывод членов семейства, внутренне соединенныхк табличной переменной.
  3. Удаление / вывод семейств, внутренне соединенных с табличной переменной.
...