Oracle数据库中表格的级联删除问题
生活随笔
收集整理的這篇文章主要介紹了
Oracle数据库中表格的级联删除问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據庫表中沒有設置級聯刪除.怎樣用SQL語句實現:如:EMP表中有字段DEPT_NO是外鍵POS表中有字段DEPT_NO是外鍵DEPT表中有字段DEPT_NO,如何實現刪除DEPT表中數據時將EMP表,POS表中的相關數據也刪除;
這里有兩種方法:
方法一:觸發器解決create or replace trigger delete_deptbefore delete on DEPTfor each rowbegindelete from EMP where DEPT_NO = :old.DEPT_NO;delete from POS where DEPT_NO = :old.DEPT_NO;end;
方法二:修改你的外鍵設置,達到級聯刪除的目的,具體實現如下:a)先查詢出EMP表和POS表中 外鍵的名稱(如果知道 外鍵名這一步可以省略)select CONSTRAINT_NAME,TABLE_NAME from user_constraints where CONSTRAINT_TYPE ='R' and TABLE_NAME in('EMP','POS');b)刪除EMP表和POS表上的外鍵后 重新建立允許級聯刪除的外鍵模式alter table EMP drop constraint 外鍵名;alter table POS drop constraint 外鍵名;alter table EMP add constraint 外鍵名 foreign key(DEPT_NO) references DEPT(DEPT_NO) on delete cascade;alter table POS add constraint 外鍵名 foreign key(DEPT_NO) references DEPT(DEPT_NO) on delete cascade;
這里有兩種方法:
方法一:觸發器解決create or replace trigger delete_deptbefore delete on DEPTfor each rowbegindelete from EMP where DEPT_NO = :old.DEPT_NO;delete from POS where DEPT_NO = :old.DEPT_NO;end;
方法二:修改你的外鍵設置,達到級聯刪除的目的,具體實現如下:a)先查詢出EMP表和POS表中 外鍵的名稱(如果知道 外鍵名這一步可以省略)select CONSTRAINT_NAME,TABLE_NAME from user_constraints where CONSTRAINT_TYPE ='R' and TABLE_NAME in('EMP','POS');b)刪除EMP表和POS表上的外鍵后 重新建立允許級聯刪除的外鍵模式alter table EMP drop constraint 外鍵名;alter table POS drop constraint 外鍵名;alter table EMP add constraint 外鍵名 foreign key(DEPT_NO) references DEPT(DEPT_NO) on delete cascade;alter table POS add constraint 外鍵名 foreign key(DEPT_NO) references DEPT(DEPT_NO) on delete cascade;
總結
以上是生活随笔為你收集整理的Oracle数据库中表格的级联删除问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vb的一些搞怪的操作
- 下一篇: Oracle笔记:循环及游标