Maison >base de données >tutoriel mysql >Comment supprimer des enregistrements de plusieurs tables SQL Server à l'aide d'INNER JOIN ?

Comment supprimer des enregistrements de plusieurs tables SQL Server à l'aide d'INNER JOIN ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-07 07:10:40862parcourir

How to Delete Records from Multiple SQL Server Tables Using 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn