SQL> create table a (a int);
表已创建。
SQL> create table b (b int);
表已创建。
SQL> select * from a;
A
----------
1
2
SQL> select * from b;
B
----------
1
2
SQL> alter table a add constraint pk_a primary key (a);
表已更改。
SQL> alter table b add constraint fk_b foreign key (b) references a (a) on delete cascade;
表已更改。 //references 后面的是爸爸
============================================================
SQL> delete from a where rownum=1; //杀死爸爸,儿子也消失了
已删除 1 行。
SQL> select * from a;
A
----------
2
SQL> select * from b;
B
----------
2
==================================================================
SQL> rollback;
回退已完成。
SQL> delete from b where rownum=1; // 杀死儿子,爸爸没事。
已删除 1 行。
SQL> select * from a;
A
----------
1
2
SQL> select * from b;
B
----------
2
==================================================================
SQL> rollback;
回退已完成。
SQL> insert into a values (3); //创建一个新爸爸,不用先有儿子。
已创建 1 行。
SQL> insert into b values (9); //创建一个新儿子,要先有对应的爸爸。
insert into b values (9)
*
第 1 行出现错误:
ORA-02291: 违反完整约束条件 (SCOTT.FK_B) - 未找到父项关键字