大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
SQL和 Oracle外键的相关约束中的级联删除 我们在相关的系统中如果你要删除相关记录 我们就要关联一起删除N多张表 同时它们之间还存在着相互约束的关系 所以考虑到在创建表时加上约束关系
专注于为中小企业提供成都网站设计、成都网站制作、外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业晋安免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
详细内容如下:
SQL的Oracle外键约束可以实现级联删除与级联更新;Oracle 则只充许级联删除
SQL级联删除与级联更新使用格式
CREATE TABLE A (ID INT PRIMARY KEY NAME VARCHAR( ))
CREATE TABLE A (ID INT REFERENCES A (ID)ON DELETE CASCADE ON UPDATE CASCADE AGE TINYINT)
Oracle 级联删除使用格式
CREATE TABLE A (ID INT PRIMAY KEY NAME VARCHAR ( ))
CREATE TABLE A (ID INT REFERENCES A (ID)ON DELETE CASCADE AGE NUMBER( ))
CREATE TABLE groups
(
id VARCHAR ( ) CONSTRAINT pk_groupid PRIMARY KEY
name VARCHAR ( )
description VARCHAR ( )
)
TABLESPACE userspace;
CREATE TABLE usringrp
(
group_id VARCHAR ( ) CONSTRAINT fk_uing_grpid
REFERENCES groups(id)
ON DELETE CASCADE
user_id VARCHAR ( )
)
TABLESPACE userspace;
PowerDesigner
参照完整性约束
限制(Restrict) 不允许进行修改或删除操作 若修改或删除主表的主键时 如果子表中存在子记录 系统将产生一个错误提示 这是缺省的参照完整性设置
置空(Set Null) 如果Oracle外键列允许为空 若修改或删除主表的主键时 把子表中参照的外键列设置为空值(NULL)
置为缺省(Set Default) 如果指定了缺省值 若修改或删除主表的主键时 把子表中参照的Oracle外键设置为缺省值(Default)
级联(Cascade) 把主表中主键修改为一个新的值时 相应修改子表中Oracle外键的值 或者删除主表中主键的记录时 要相应删除子表中外键的记录
lishixinzhi/Article/program/Oracle/201311/17613
设定dept表deptno列为主键。
alter table dept add constraint pk_deptno primary key (deptno);
在emp表deptno列上建立外键引用dept表deptno,指定外键类型为级联删除。
alter table emp add constraint fk_deptno foreign key (deptno) references dept(deptno) on delete cascade;
这样删除dept表 只需:delete from dept where city='shanghai'; 就可以自动删除对应emp表内容。
你这个写法有问题,oracle不允许这样删除,如果想级联删除有两个方法实现:方法一:触发器解决,方法二:修改你的外键设置,达到级联删除的目的。如果不用级联删除的话就只有一个表一个表的删除,先删除contactcomm表再删除contact 表。
修改你的外键设置,达到级联删除的目的,具体实现如下:
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;
这样删除关联删除是自动的