在你B表上建立级联删除 alter table b add constraint fk_b foreign key(bid) references a(aid) on delete cascade;
-- 你是要:外键里面的相关数据也删除? -- 可以分两步走: -- (1) 删除从表数据:(假设表a与表b的相关主外键名相同,均为:pkid,) delete from b where pkid in ( select a.pkid from a where c='xxx' );-- (2) 删除主表数据: delete from a where c='xxx';
我试了一下alter table b add constraint fk_b foreign key(bid) references a(aid) on delete cascade; 这个不能进行级联删除啊,是不是我操作错了
举个例子: 1、创建两个表中分别存的时员工的基本信息和公司的部门信息。 create table dept (deptno number(10) not null, deptname varchar2(30) not null, constraint pk_dept primary key(deptno)); 和 create table emp ( empno number(10) not null, fname varchar2(20) , lname varchar2(20) , dept number(10) , constraint pk_emp primary key(empno));2、增加外键on delete cascade: alter table emp add constraint fk_emp_dept foreign key(dept) references dept(deptno) on delete cascade;3、先增加外键。然后插入数据。 insert into dept values(1,’销售部’); insert into dept values(2,’财务部’); insert into emp values (2,’Mary’,'Song’,1); insert into emp values (3,’Linda’,'Liu’,2); insert into emp values (4,’Linlin’,'Zhang’,1);4、然后现在我要删除销售部(注意看结果!) delete from dept where deptno = 1; 发现除了dept中的一条数据被删除了,emp中两条数据也被删除了,其中emp中的两条数据是参照了销售部的这条数据的,这就是on delete cascade。
alter table b
add constraint fk_b foreign key(bid) references a(aid) on delete cascade;
-- 你是要:外键里面的相关数据也删除?
-- 可以分两步走:
-- (1) 删除从表数据:(假设表a与表b的相关主外键名相同,均为:pkid,)
delete from b
where pkid in ( select a.pkid from a where c='xxx' );-- (2) 删除主表数据:
delete from a
where c='xxx';
add constraint fk_b foreign key(bid) references a(aid) on delete cascade;
这个不能进行级联删除啊,是不是我操作错了
举个例子:
1、创建两个表中分别存的时员工的基本信息和公司的部门信息。
create table dept
(deptno number(10) not null,
deptname varchar2(30) not null,
constraint pk_dept primary key(deptno));
和
create table emp
( empno number(10) not null,
fname varchar2(20) ,
lname varchar2(20) ,
dept number(10) ,
constraint pk_emp primary key(empno));2、增加外键on delete cascade:
alter table emp
add constraint fk_emp_dept foreign key(dept) references dept(deptno) on delete cascade;3、先增加外键。然后插入数据。
insert into dept values(1,’销售部’);
insert into dept values(2,’财务部’);
insert into emp values (2,’Mary’,'Song’,1);
insert into emp values (3,’Linda’,'Liu’,2);
insert into emp values (4,’Linlin’,'Zhang’,1);4、然后现在我要删除销售部(注意看结果!)
delete from dept where deptno = 1;
发现除了dept中的一条数据被删除了,emp中两条数据也被删除了,其中emp中的两条数据是参照了销售部的这条数据的,这就是on delete cascade。