Heim >Datenbank >MySQL-Tutorial >Wie lösche ich Datensätze aus mehreren SQL Server-Tabellen mithilfe von 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!