举例:
drop table if exists t1
drop table if exists t2
create table t1(id int primary key , s1 float)
create table t2(id int , id1 int ,s1 float,foreign key(id1) references t1(id) )
insert into t1 values(1,20)
insert into t1 values(2,30)
insert into t2 values(1,1,50)
--如果你直接删除t1的数据,则物塌报错
delete t1
692: Key value for constraint (root.u143_565) is still being referenced.
Error in line 1
Near character position 8
--需要先删除t2表中的数据,才能删除t1表中的数据
delete t2
delete t1
2、可以卖竖通过外键设置级联删除
--在设置外中蚂大键时,设置级联删除
drop table t2
drop table t1
create table t1(id int primary key , s1 float)
create table t2(id int , id1 int ,s1 float,foreign key(id1) references t1(id) on delete cascade)
insert into t1 values(1,20)
insert into t1 values(2,30)
insert into t2 values(1,1,50)
--此时删除t1的数据,则删除t1及t2中数据
>delete t1
2 row(s) deleted.
>select * from t2
idid1s1
No rows found.
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)