Pregunta

¿Es posible valores de salida de un eliminar en cascada en SQL?

Algo así como:

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

Si había dos familias con tres miembros en total, debe ceder algo como:

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

También es aceptable para una solución para dar 1 fila por familia con los miembros borrado en cascada en una lista delimitada. Algo así como:

[FamilyID]   [FamilyName]   [MemberNames]
 12           'Family A'     'Member 1|Member 2'
 13           'Family B'     'Member 3'
¿Fue útil?

Solución

La mejor solución que pudo encontrar los rendimientos de dos conjuntos de resultados:

  1. Seleccione los ID de las familias a eliminar en una variable de tabla.
  2. miembros de la familia / salida Eliminar interior se unió en contra de la variable de tabla.
  3. familias Eliminar / salida del centro de la unió en contra de la variable de tabla.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top