Det är de bästa och mest effektiva. För produktionsfrågor skulle jag använda 2
.
De enda andra sätten jag kan tänka mig skulle (IMO) endast vara lämpliga för snabb och smutsig borttagning av data i en testmiljö (undviker behovet av att analysera rätt ordning)
- Inaktivera alla FK:er radera önskad data och aktivera sedan FK:er igen. Detta är ineffektivt eftersom de måste återaktiveras
WITH CHECK
för att undvika att lämna FK:erna i ett opålitligt tillstånd, vilket innebär att all bevarad data måste valideras på nytt. - Lista ut alla
DELETE
uttalanden på berörda tabeller i godtycklig ordning och kör partiet så många gånger som behövs tills det lyckas utan FK-fel.