2017-11-24 7 views
0

Zum Beispiel habe ich diese SQL-Abfrage ausführen, die ein Ergebnis gegeben wird. Ich möchte diese Ergebnisse mit Oracle-Abfrage löschen.So löschen Sie Datensätze für mehrere Tabellen in einer Abfrage mit Oracle

Select 
 
a.ENAME , 
 
a.JOB, 
 
a.MGR, 
 
a.HIREDATE, 
 
a.SAL, 
 
b.DEPTNO, 
 
b.DNAME, 
 
b.LOC 
 
from emp a , dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10 
 
DELETE FROM emp , dept 
 
WHERE a.DEPTNO=b.DEPTNO

+0

Sie können es in einer einzelnen Abfrage nicht tun. Sie müssten zwei Abfragen aus 2 Tabellen löschen. – XING

+0

können Sie erklären, –

+0

Siehe unten Antwort. Seine gut erklärt – XING

Antwort

0

Es gibt keinen Befehl aus zwei Tabellen löschen verknüpfen, dass. Aber ich schlage zwei Szenarien vor. Das erste Szenario kann für nicht übergeordnete/untergeordnete Tabellen verwendet werden. Das zweite Szenario kann für Eltern-/Kindtabellen verwendet werden.

Erste: Sammeln Sie alle Ihre gemeinsamen des PK oder ein gemeinsames Feld Ihrer Tabellen. (Sicher haben Sie ein gemeinsames Feld). wie unten Abfrage:

Verwenden Sie dann Reihenfolge der Löschbefehle in einer Transaktion.

delete from dept where DEPTNO IN (Select a.DEPTNO from emp a , dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10) 
delete from emp where DEPTNO IN (Select a.DEPTNO from emp a , dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10) 

Zweite: verwenden CASCADE Konfiguration DELETE. (nur für Eltern/Kind-Tabellen)
Diese Lösung ist schädlich, wenn die Nebenwirkungen nicht kontrolliert werden können.
Beim kaskadierenden Löschen werden die entsprechenden Datensätze in der untergeordneten Tabelle automatisch gelöscht, wenn ein Datensatz in der übergeordneten Tabelle gelöscht wird.

+0

'CASCADE DELETE' funktioniert, wo Sie eine Fremdschlüssel-Beziehung haben. Und Sie erklären dies während der Tabellenerstellung. Lesen Sie ein gutes Beispiel hier https://www.techonthenet.com/oracle/foreign_keys/foreign_delete.php – XING

+0

Danke, ich weiß das (zweites Szenario kann für Eltern/Kind-Tabellen verwendet werden.) –

+0

@ XING. . . Die Fremdschlüsselbeziehung kann auch nach dem Erstellen der Tabelle definiert werden. –

Verwandte Themen