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