2017-01-28 4 views
-1

Ich erstellte eine gespeicherte Prozedur, um Datensätze aus mehreren Tabellen zu löschen.Mit Join, um einen Datensatz aus mehreren Tabellen zu löschen

Meine gespeicherte Prozedur sieht wie folgt aus:

create proc SPdellistbollandinvoice 
    @trno nvarchar(50) 
as 
begin 
    delete from listmybill where [email protected] 
    delete from listinvoice where [email protected] 
end 

Das funktioniert prima, aber ich möchte lernen, wie man das gleiche löschen verwenden beizutreten.

Dies ist, was ich

exec SPdellistbollandinvoice '100280120171' 

und die Nachricht

(1 row(s) affected) 

(1 row(s) affected) 
+2

Sie können nicht gelöscht werden mehr als eine Tabelle mit einzelnen 'delete' Anweisung löschen tue. Ein anderer Weg wäre 'trigger' zu erstellen oder eine andere Tabelle innerhalb des Triggers zu löschen, aber der Trigger wird für jede delete-Anweisung ausgelöst, nicht nur für die delete-Anweisung in der Prozedur –

+0

Oder wenn es einen Fremdschlüssel zwischen den Tabellen gibt, benutze auf Löschkaskade. –

Antwort

-1
 delete bill from listmybill b 
    left join listinvoice i on b.id = i.id 

where [email protected] 
+0

Bitte verwenden Sie den Link [Bearbeiten], um zu erklären, wie dieser Code funktioniert, und geben Sie nicht nur den Code an, da eine Erklärung zukünftigen Lesern eher hilft. Siehe auch [Antwort]. [Quelle] (http://stackoverflow.com/users/5244995) –

Verwandte Themen