Es ist möglich, löschen-Anweisungen registrieren um den Satz zu qualifizieren gelöscht werden, wie die folgenden:Kann man aus mehreren Tabellen in derselben SQL-Anweisung löschen?
DELETE J
FROM Users U
inner join LinkingTable J on U.id = J.U_id
inner join Groups G on J.G_id = G.id
WHERE G.Name = 'Whatever'
and U.Name not in ('Exclude list')
Jedoch habe ich beim Löschen auf beiden Seiten der Kriterien beitreten interessiert bin - sowohl in der LinkingTable
Aufzeichnung und die Benutzerdatensatz, von dem es abhängt. Ich kann Kaskaden nicht einschalten, weil meine Lösung zuerst Entity Framework-Code ist und die bidirektionalen Beziehungen für mehrere Kaskadenpfade sorgen.
Idealerweise würde Ich mag so etwas wie:
DELETE J, U
FROM Users U
inner join LinkingTable J on U.id = J.U_id
...
syntaktisch dies nicht funktioniert, aber ich bin gespannt, ob so etwas möglich ist?
Nein, eine DML-Anweisung kann nur eine Tabelle betreffen. Ihre Option besteht darin, eine der Einschränkungen zu entfernen (und sie möglicherweise stattdessen mithilfe eines Triggers durchzusetzen). –
Ich denke, Sie müssen in Ihrer Frage deutlicher machen, dass Sie Fremdschlüssel in beide Richtungen zeigen. –
@AaronBertrand: Danke - das war die Antwort, nach der ich gesucht habe: DML-Anweisungen können nur eine Tabelle beeinflussen und somit ist das, was ich will, unmöglich. Wir müssen einen anderen Weg finden. Wenn Sie eine Antwort auf diesen Effekt schreiben, werde ich es markieren. – bwerks