Suppression de plusieurs tables avec INNER JOIN dans SQL Server
Contrairement à MySQL, SQL Server ne prend pas directement en charge la suppression de plusieurs tables à l'aide d'un JOINTURE INTÉRIEURE. Cependant, vous pouvez obtenir le même effet avec la solution de contournement suivante :
Étape 1 : Utilisez la pseudo-table "Supprimée"
Créez une table temporaire appelée "@deletedIds". pour stocker les identifiants des lignes supprimées de la première table :
begin transaction; declare @deletedIds table ( id int ); delete from t1 output deleted.id into @deletedIds from table1 as t1 inner join table2 as t2 on t2.id = t1.id inner join table3 as t3 on t3.id = t2.id;
Étape 2 : Supprimer des tables suivantes
Utilisez la table "@deletedIds" pour supprimer des tables suivantes :
delete from t2 from table2 as t2 inner join @deletedIds as d on d.id = t2.id; delete from t3 from table3 as t3 ...
Étape 3 : Valider la transaction
Commitez la transaction pour apporter les modifications permanent :
commit transaction;
Remarque : Vous pouvez afficher delete.id à partir de la deuxième instruction de suppression si nécessaire pour vous joindre à la troisième table.
Approche alternative : Déclencheurs
Envisagez d'utiliser un déclencheur sur la table1 qui supprime automatiquement de la table2 et de la table3 lorsqu'une ligne est supprimée de la table1. Cela garantit l'intégrité référentielle et élimine le besoin de suppression manuelle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!