ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Foreign key 选项--on delete cascade、on delete set null

Foreign key 选项--on delete cascade、on delete set null

原创 Linux操作系统 作者:lsq_008 时间:2011-07-26 14:40:21 0 删除 编辑

最近闲来无事,开始学习ocp课程,发现有很多细节的东西以前没用过,很值得一学,今天就是第一次看到on delete set null的选项。

SQL> create table p(id number,dname varchar2(10));

 

表已创建。

 

SQL> alter table p add constraint pk_p primary key(id);

 

表已更改。

 

SQL> insert into p values(1,'a');

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> create table c(cid number primary key,pid number);

 

表已创建。

 

SQL> alter table c add constraint fk_c foreign key(pid) references p(id) on delete set null;

 

表已更改。

 

SQL> insert into c values(1,1);

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from p;

 

        ID DNAME

---------- ----------

         1 a

 

SQL> select * from c;

 

       CID        PID

---------- ----------

         1          1

 

SQL> delete from p;

 

已删除 1 行。

 

SQL> select * from c;

 

       CID        PID

---------- ----------

         1

 

SQL> alter table c drop constraint fk_c;

 

表已更改。

 

SQL> alter table c add constraint fk_c foreign key(pid) references p(id) on delete cascade;

 

表已更改。

 

SQL> delete from p;

 

已删除 1 行。

 

SQL> select * from p;

 

未选定行

 

SQL> select * from c;

 

未选定行

 

结论: on delete cascade级联删除子表的记录,on delete cascade set null 将子表记录的外键值设置为null

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10972173/viewspace-703123/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
十余年大型金融及电信系统数据库管理经验,曾服务于中国建设银行、中国移动。对oracle,mysql数据库有深入了解。 擅长python开发,独立开发了开源数据库自动化监控运维平台Power Monitor。

注册时间:2008-02-29

  • 博文量
    325
  • 访问量
    1257963