oracle删除关联表的数据,如何删除啊!下面是我写的SQL,不知道哪里出问题了,就是运行不了!

oracle删除关联表的数据,如何删除啊!下面是我写的SQL,不知道哪里出问题了,就是运行不了!,第1张

你这个写法有问题,oracle不允许这样删除,如果想级联删除有两个方法实现:方法一:触发器解决,方法二:修改你的外键设置,达到级联删除的目的。如果不用级联删除的话就只有一个表一个表的删除,先删除contactcomm表再删除contact 表。

删除dept表中的数据:

delete

from

dept

t

where

t.city

=

'shanghai'

删除与之关联的emp表中的数据:

delete

from

emp

e

where

e.deptno

in

(

select

t.deptno

from

dept

t

where

t.city

=

'shanghai'

)

删主键值之前,必须先删掉它的外键,这两条SQL的执行顺序楼主自己调一下。

修改你的外键设置,达到级联删除的目的,具体实现如下:

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

这样删除关联删除是自动的


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存