2017-03-10 3 views
0

Ich habe eine Abfrage erstellt, die Zeilen aus drei Tabellen mit 'Employee' löscht. Wenn ich es ausführen, löscht es nur Zeilen aus einer Tabelle tblEmployeeType. Ich habe versucht, Alias ​​ anderer Tabellen neben DELETE hinzuzufügen, aber SQL unterstützt es nicht. Gibt es eine alternative Möglichkeit zum Löschen von Zeilen aus mehreren Tabellen? oder ich habe einige Codes in meiner Abfrage vergessen oder sollte ich einfach löschen Abfragen? Vielen Dank.Löschen von Zeilen aus mehreren Tabellen

DELETE a 
    FROM tblEmployeeType a INNER JOIN 
     tbl_Selected_AccessType b 
     ON a.EmpTypeName = b.UserType INNER JOIN 
     tbl_AccessType_AllFunction c 
     ON a.EmpTypeName = c.UserType 
    WHERE a.EmpTypeName = 'Employee'` 
+0

Wenn ein Fremdschlüssel zwischen den Tabellen definiert ist, können Sie DELETE CASCADE verwenden, um Zeilen aus diesen Tabellen in einer einzelnen Abfrage zu löschen. Oder Sie können eine gespeicherte Prozedur mit Löschanweisungen erstellen. Da Sie Zeilen aus mehreren Tabellen in einer einzelnen Abfrage nicht löschen können, wenn sie nicht verwandt sind. –

Antwort

1

INSERT und UPDATE Aussagen können nur wirken sich direkt auf eine Tabelle zu einem Zeitpunkt. Wenn Sie Fremdschlüssel mit ON DELETE CASCADE konfiguriert haben, werden untergeordnete Datensätze mit dem übergeordneten Datensatz gelöscht. Unabhängig davon, ob Kaskadierung verwendet wird, sollten Sie Fremdschlüssel in der Tabelle haben, damit Ihre DELETE keine verwaisten untergeordneten Datensätze mit defekter referenzieller Integrität belässt.

Eine andere Möglichkeit, andere Tabellen in einer INSERT oder UPDATE zu beeinflussen, ist die Verwendung eines Triggers für die Tabelle. Dies kann wünschenswert sein, wenn Sie vor dem blinden Löschen von untergeordneten Datensätzen Prüfungen durchführen möchten.

Verwandte Themen