首页 / ORACLE / Oracle级联操作
Oracle级联操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle级联操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3179字,纯文字阅读大概需要5分钟。
内容图文
Oracle的级联操作是为了处理,在删除主表数据时,从表外键数据该怎么处理,有如下三种情况:SET NULL,CASCADE,NO ACTION。
Oracle的级联操作是为了处理,在删除主表数据时,从表外键数据该怎么处理,有如下三种情况:
1、SET NULL:
此关键字用于表示当删除主表中被引用列的数据时,将子表中相应引用列的值设置为NULL值。这种情况要求子表中的引用列支持NULL值。
2、CASCADE:
此关键字用于表示当删除主表中被引用列的数据时,级联删除子表中相应的数据行。
3、NO ACTION:
约束后面省略ON DELETE的情况,,此关键字用于表示当删除主表中被引用列的数据时,如果子表的引用列中包含该值,则禁止该操作执行。
下面通过例子展示:
第一种情况:
--创建主表
SQL> create table father(
2 f_id number(10) primary key,
3 f_name varchar2(20)
4 );
表已创建。
--创建从表
SQL> create table child(
2 c_id number(10) primary key,
3 f_id number(10),
4 c_name varchar2(20),
5 constraint ch_fa foreign key (f_id) references father(f_id)
6 on delete set null
7 );
--插入数据
SQL> insert into father values (1,'cupid');
已创建 1 行。
SQL> insert into father values (2,'dorria');
已创建 1 行。
SQL> insert into child values (1,1,'jack');
已创建 1 行。
SQL> insert into child values (2,2,'rose');
已创建 1 行。
commit;
提交完成。
SQL> delete from father where f_id=1;
已删除 1 行。
SQL> commit;
提交完成。
SQL> select * from father;
F_ID F_NAME
---------- -------------------------------
2 dorria
SQL> select * from child;
C_ID F_ID C_NAME
---------- ---------- --------------------
1 jack
2 2 rose
第二种情况:
--创建主表
SQL> create table father_1(
2 f_id number(10) primary key,
3 f_name varchar2(20)
4 );
表已创建。
--创建从表
SQL> create table child_1(
2 c_id number(10) primary key,
3 f_id number(10),
4 c_name varchar2(20),
5 constraint ch_fa_1 foreign key (f_id) references father(f_id)
6 on delete cascade
7 );
--插入数据
SQL> insert into father_1 values (1,'cupid');
已创建 1 行。
SQL> insert into father_1 values (2,'dorria');
已创建 1 行。
SQL> insert into child_1 values (1,1,'jack');
已创建 1 行。
SQL> insert into child_1 values (2,2,'rose');
已创建 1 行。
commit;
提交完成。
SQL> delete from father where f_id=1;
已删除 1 行。
SQL> commit;
提交完成。
SQL> select * from father;
F_ID F_NAME
---------- -------------------------------
2 dorria
SQL> select * from child_1;
C_ID F_ID C_NAME
---------- ---------- --------------------
2 2 rose
第三种情况:
--创建主表
SQL> create table father_2(
2 f_id number(10) primary key,
3 f_name varchar2(20)
4 );
表已创建。
--创建从表
SQL> create table child_2(
2 c_id number(10) primary key,
3 f_id number(10),
4 c_name varchar2(20),
5 constraint ch_fa_2 foreign key (f_id) references father(f_id)
6 );
--插入数据
SQL> insert into father_2 values (1,'cupid');
已创建 1 行。
SQL> insert into father_2 values (2,'dorria');
已创建 1 行。
SQL> insert into child_2 values (1,1,'jack');
已创建 1 行。
SQL> insert into child_2 values (2,2,'rose');
已创建 1 行。
commit;
提交完成。
SQL> delete from father_2 where f_id=1;
delete from father_2 where f_id=1
*
第 1 行出现错误:
ORA-02292: 违反完整约束条件 (SCOTT.CH_FA_2) - 已找到子记录
内容总结
以上是互联网集市为您收集整理的Oracle级联操作全部内容,希望文章能够帮你解决Oracle级联操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。