Maison >base de données >tutoriel mysql >Comment supprimer des enregistrements de plusieurs tables SQL Server à l'aide d'INNER JOIN ?
Suppression d'enregistrements de plusieurs tables avec INNER JOIN dans SQL Server
Contrairement à MySQL, SQL Server ne prend pas directement en charge la syntaxe utilisée pour supprimer des enregistrements à partir de plusieurs tables en utilisant un INNER JOIN. Cependant, une solution de contournement peut être obtenue en exploitant la pseudo-table "supprimée".
Étape 1 : initialiser une table temporaire pour stocker les identifiants supprimés
begin transaction; declare @deletedIds table ( id int );
Étape 2 : Supprimer de la première table et sortie supprimée ID
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 3 : Supprimer de la deuxième table à l'aide de la table temporaire
delete from t2 from table2 as t2 inner join @deletedIds as d on d.id = t2.id;
Étape 4 : Supprimer des tables supplémentaires (Facultatif)
delete from t3 from table3 as t3 ...
Étape 5 : valider le Transaction
commit transaction;
Remarque :La sortie des identifiants supprimés à partir de la première suppression vous permet de continuer à vous inscrire pour les suppressions ultérieures.
Approche alternative : déclencheurs
Vous pouvez également créer des déclencheurs sur la première table pour gérer la suppression des enregistrements associés dans d'autres tableaux. Cette approche garantira l’intégrité des données dans une transaction implicite. Cependant, il nécessite une maintenance supplémentaire du déclencheur et ne prend pas facilement en charge les conditions de jointure complexes.
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!