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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-07 06:51:431000parcourir

How to Delete from Multiple Tables in SQL Server Using INNER JOIN?

Suppression de plusieurs tables avec INNER JOIN dans SQL Server

Contrairement à MySQL, SQL Server ne prend pas en charge la syntaxe de suppression de plusieurs tables à l'aide JOINTURE INTÉRIEURE. Cependant, il existe des méthodes alternatives pour obtenir le même résultat.

Utilisation de la pseudo-table "supprimée"

Considérez l'exemple de code suivant :

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;

delete from t2
from table2 as t2
    inner join @deletedIds as d
        on d.id = t2.id;

delete from t3
from table3 as t3 ...

commit transaction;

Ce code utilise la pseudo-table "supprimée" pour stocker les identifiants supprimés de la première instruction de suppression. Ces identifiants sont ensuite utilisés dans les instructions de suppression ultérieures pour supprimer les lignes correspondantes d'autres tables.

Autres considérations

  • Vous pouvez également utiliser « sortie supprimée ». dans la deuxième instruction delete si nécessaire pour rejoindre une troisième table.
  • Envisagez d'utiliser des déclencheurs sur la table parent (par exemple, table1) pour supprimer automatiquement les lignes des tables enfants (par exemple, table2 et table3) le cas échéant. Cette approche constitue un moyen pratique et efficace de maintenir l'intégrité des données sur plusieurs tables.

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