一个delete可以删除2个表的数据吗

sd090418 2010-12-03 03:18:56
有这样一个问题,有一张表:EMP,其中有个字段是deptid关联DEPT表中的id。现有要求:删除部门id=1,并同时删除EMP表中部门1的数据。能否用一条delete实现呢。
用2条的话我自己也会。delete from dept where id='1';
delete from emp where deptid='1';
...全文
222 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd090418 2010-12-03
  • 打赏
  • 举报
回复
其实这是我上次碰到的一个面试题,而我也只是想知道可以不可以写SQL直接删2个表中的数据的,既然这么多高手都肯定一个SQL不能删除2个的话,呢就是肯定不能了。
心中的彩虹 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 sd090418 的回复:]
有这样一个问题,有一张表:EMP,其中有个字段是deptid关联DEPT表中的id。现有要求:删除部门id=1,并同时删除EMP表中部门1的数据。能否用一条delete实现呢。
用2条的话我自己也会。delete from dept where id='1';
delete from emp where deptid='1';
[/Quote]
外键关联 级联删除吧
happy_javaboy 2010-12-03
  • 打赏
  • 举报
回复
在数据库中设置对应的外键关联、、就可以了、、另外如果是程序的话用hibernate也可以实现级联删除、添加之类的东东、、
如果不想设置关联,那就只好写触发器了、、
Leshami 2010-12-03
  • 打赏
  • 举报
回复


--首先删除你emp表对dept表的参照关系,假定参照名为fk_emp_dept
alter table emp
drop constraint fk_emp_dpet;
--接下来重新建议参照关系
alter table emp
add constraint fk_emp_dept
foreign key(deptid) references dept(id)
on delete cascade; --这句用于实现级联删除
iqlife 2010-12-03
  • 打赏
  • 举报
回复
你在数据库中设置外键级联删除就可以

一条SQL 不能同时删除两张表中的数据
sd090418 2010-12-03
  • 打赏
  • 举报
回复
不用触发器之类的,直接写SQL呢。
  • 打赏
  • 举报
回复
[Quote=引用楼主 sd090418 的回复:]
有这样一个问题,有一张表:EMP,其中有个字段是deptid关联DEPT表中的id。现有要求:删除部门id=1,并同时删除EMP表中部门1的数据。能否用一条delete实现呢。
用2条的话我自己也会。delete from dept where id='1';
delete from emp where deptid='1';
[/Quote]做个触发器

create or replace trigger deletetri
after delete on dept
for each row
begin
delete emp where deptno=:old.deptno;
end;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧