Heim >Datenbank >MySQL-Tutorial >Wie lösche ich Zeilen aus mehreren SQL Server-Tabellen mithilfe von INNER JOIN?
Löschen aus mehreren Tabellen mit INNER JOIN in SQL Server
Im Gegensatz zu MySQL unterstützt SQL Server das Löschen aus mehreren Tabellen mithilfe von nicht direkt INNER JOIN. Sie können jedoch den gleichen Effekt mit der folgenden Problemumgehung erzielen:
Schritt 1: Verwenden Sie die Pseudotabelle „Gelöscht“
Erstellen Sie eine temporäre Tabelle mit dem Namen „@deletedIds“ um die IDs gelöschter Zeilen aus der ersten Tabelle zu speichern:
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;
Schritt 2: Löschen aus Nachfolgende Tabellen
Verwenden Sie die Tabelle „@deletedIds“, um aus nachfolgenden Tabellen zu löschen:
delete from t2 from table2 as t2 inner join @deletedIds as d on d.id = t2.id; delete from t3 from table3 as t3 ...
Schritt 3: Transaktion festschreiben
Übernehmen Sie die Transaktion, um die Änderungen vorzunehmen permanent:
commit transaction;
Hinweis:Sie können gelöschte.id aus der zweiten Löschanweisung ausgeben, wenn dies für die Verknüpfung mit der dritten Tabelle erforderlich ist.
Alternativer Ansatz : Trigger
Erwägen Sie die Verwendung eines Triggers für Tabelle1, der automatisch aus Tabelle2 und Tabelle3 löscht, wenn eine Zeile aus gelöscht wird Tabelle1. Dies stellt die referenzielle Integrität sicher und macht ein manuelles Löschen überflüssig.
Das obige ist der detaillierte Inhalt vonWie lösche ich Zeilen aus mehreren SQL Server-Tabellen mithilfe von INNER JOIN?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!