Heim >Datenbank >MySQL-Tutorial >Wie lösche ich Datensätze aus mehreren SQL Server-Tabellen mithilfe von INNER JOIN?

Wie lösche ich Datensätze aus mehreren SQL Server-Tabellen mithilfe von INNER JOIN?

Barbara Streisand
Barbara StreisandOriginal
2025-01-07 07:10:40975Durchsuche

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

Löschen von Datensätzen aus mehreren Tabellen mit INNER JOIN in SQL Server

Im Gegensatz zu MySQL unterstützt SQL Server die zum Löschen von Datensätzen verwendete Syntax nicht direkt aus mehreren Tabellen mit einem INNER JOIN. Eine Problemumgehung kann jedoch durch die Nutzung der „gelöschten“ Pseudotabelle erreicht werden.

Schritt 1: Initialisieren Sie eine temporäre Tabelle zum Speichern gelöschter IDs

begin transaction;

declare @deletedIds table ( id int );

Schritt 2: Aus der ersten Tabelle löschen und Ausgabe gelöscht IDs

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;

Schritt 3: Aus der zweiten Tabelle mithilfe der temporären Tabelle löschen

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

Schritt 4: Aus zusätzlichen Tabellen löschen (Optional)

delete from t3
from table3 as t3 ...

Schritt 5: Übernehmen Sie die Transaktion

commit transaction;

Hinweis: Durch die Ausgabe gelöschter IDs aus der ersten Löschung können Sie bei nachfolgenden Löschungen mit der Teilnahme fortfahren.

Alternativer Ansatz: Auslöser

Alternativ können Sie Trigger für die erste Tabelle erstellen, um das Löschen verwandter Elemente zu verarbeiten Datensätze in anderen Tabellen. Dieser Ansatz stellt die Datenintegrität innerhalb einer impliziten Transaktion sicher. Es erfordert jedoch eine zusätzliche Triggerwartung und unterstützt komplexe Join-Bedingungen nicht ohne weiteres.

Das obige ist der detaillierte Inhalt vonWie lösche ich Datensätze aus mehreren SQL Server-Tabellen mithilfe von INNER JOIN?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn