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) - 未找到父項關鍵字

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