簡體   English   中英

如何使用oracle在一個查詢中刪除多個表的記錄

[英]How to delete record for multiple table in one query using oracle

例如,我已經執行了此sql查詢,並給出了結果。 我想使用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 

沒有任何命令要從兩個表中刪除以鏈接該表。 但是我提出了兩種情況。 第一種情況可用於非父/子表。 第二種情況可用於父/子表。

首先 :收集所有常用的PK或表中的任何常用字段。 (當然,您有一個共同的領域)。 像下面的查詢:

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

然后在一個事務中使用一系列刪除命令。

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)

第二 :使用CASCADE DELETE配置。 (僅適用於父/子表)
如果無法控制副作用,則此解決方案是有害的。
在層疊刪除中,當刪除父表中的記錄時,子表中的相應記錄將被自動刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM