Maison >base de données >tutoriel mysql >Comment supprimer de plusieurs tables avec INNER JOIN dans SQL Server ?

Comment supprimer de plusieurs tables avec INNER JOIN dans SQL Server ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-07 00:11:411001parcourir

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

Suppression de plusieurs tables avec INNER JOIN dans SQL Server

Dans MySQL, la suppression de plusieurs tables à l'aide de INNER JOIN peut être effectuée avec la syntaxe :

DELETE t1,t2 
FROM table1 AS t1 
INNER JOIN table2 t2 ...
INNER JOIN table3 t3 ...

Cependant, SQL Server ne prend pas en charge cette syntaxe. Au lieu de cela, vous pouvez utiliser la pseudo-table "supprimée" pour obtenir un résultat similaire :

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;

En utilisant la pseudo-table "deleted.id", vous pouvez effectuer une suppression en cascade sur les tables associées, garantissant ainsi que les données intégrité.

Alternative Approches :

  • Déclencheurs : Vous pouvez créer un déclencheur sur la table1 qui supprime automatiquement les lignes des tables associées (table2 et table3). Cela garantit la cohérence mais nécessite une configuration supplémentaire.
  • Clés étrangères en cascade : Configurez les clés étrangères en cascade entre les tables impliquées pour gérer automatiquement les suppressions.

En fin de compte, la plupart l'approche appropriée dépend des exigences spécifiques de votre système.

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