foreign key

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) - 未找到父项关键字

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章