SQL和 Oracle外键的相关约束中的级联删除我们在相关的系统中如果你要删除相关记录我们就要关联一起删除N多张表同时它们之间还存在着相互约束的关系所以考虑到在创建表时加上约束关系
详细内容如下:
SQL的Oracle外键约束可以实现级联删除与级联更新;Oracle 则只充许级联删除
SQL级联删除与级联更新使用格式
CREATE TABLE A(ID INT PRIMARY KEYNAME VARCHAR())
CREATE TABLE A(ID INT REFERENCES A(ID)ON DELETE CASCADE ON UPDATE CASCADEAGE TINYINT)
Oracle 级联删除使用格式
CREATE TABLE A(ID INT PRIMAY KEYNAME VARCHAR())
CREATE TABLE A(ID INT REFERENCES A(ID)ON DELETE CASCADEAGE 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外键的值或者删除主表中主键的记录时要相应删除子表中外键的记录
注意在Oracle 中建立好的constraint (包括primay keyforeign key) 如果要修改必须先alter table drop contraint con_name;然后再重新add constraint