Ce sont les meilleurs et les plus efficaces. Pour les requêtes de production, j'utiliserais 2
.
Les seuls autres moyens auxquels je peux penser ne conviendraient (IMO) qu'à la suppression rapide et sale des données dans un environnement de test (évitant d'avoir à analyser le bon ordre)
- Désactiver tous les FK, supprimer les données souhaitées, puis réactiver les FK. Ceci est inefficace car ils doivent être réactivés
WITH CHECK
pour éviter de laisser les FK dans un état non approuvé, ce qui signifie que toutes les données conservées doivent être revalidées. - Répertorier tous les
DELETE
instructions sur les tables affectées dans un ordre arbitraire et exécutez le lot autant de fois que nécessaire jusqu'à ce qu'il réussisse sans erreur FK.