oracle数据库中表格的级联删除问题

oracle数据库中表格的级联删除问题,第1张

两种方法,个人建议你选择方法一,简单方便

方法一:触发器解决(下面的代码可以不用修改,copy直接用)

create or replace trigger delete_dept

before delete on DEPT

for each row

begin

delete 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

---

以上,希望对你有所帮助。

比较容易理解,如果表A中有一个外键引用了表B的主键,A表就是子表,B表就是父表。当查询表A的数据时,通过表A的外键将表B的记录也查找出来,这就是级联查询。相应的还有级联删除,当删除B表的记录时,会先将A表中关联的记录删掉


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9608083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存