Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-Server - rekursives Löschen

Das sind die besten und effizientesten. Für Produktionsabfragen würde ich 2 verwenden .

Die einzigen anderen Möglichkeiten, die mir einfallen, wären (IMO) nur für das schnelle und schmutzige Entfernen von Daten in einer Testumgebung geeignet (um die Notwendigkeit zu vermeiden, die richtige Reihenfolge zu analysieren)

  1. Alle FKs deaktivieren, die gewünschten Daten löschen und dann die FKs wieder aktivieren. Dies ist ineffizient, da sie erneut aktiviert werden müssen WITH CHECK um zu vermeiden, dass die FKs in einem nicht vertrauenswürdigen Zustand verbleiben, was bedeutet, dass alle aufbewahrten Daten erneut validiert werden müssen.
  2. Alle DELETE auflisten Anweisungen für betroffene Tabellen in beliebiger Reihenfolge und führen Sie den Batch so oft wie nötig aus, bis er ohne FK-Fehler erfolgreich ist.