1、預設的建立方式
[color=red]在刪除被參照的資料時,將無法刪除。[/color]
create table t_invoice
(id number(10) not null,
invoice_no varchar2(30) not null,
constraint pk_invoice_id primary key(id));
create table t_invoice_detail
(id number(10) not null,
amount number(10,3),
piece number(10),
invoice_id number(10),
constraint pk_detail_id primary key(id));
alter table t_invoice_detail
add constraint fk_invoice_id
foreign key(invoice_id ) references t_invoice(id);
2、級聯刪除
外來鍵語法有個選項可以指定級聯刪除特徵。這個特徵僅作用於父表的刪除語句。使用這個選項,父表的乙個刪除操作將會自動刪除所有相關的子表記錄
alter table t_invoice_detail
add constraint fk_invoice_id
foreign key(invoice_id ) references t_invoice(id)
on delete cascade;
如果不能級聯刪除,可設定子表外來鍵字段值為null,使用on delete set null語句(外來鍵字段不能設定not null約束).
alter table t_invoice_detail
add constraint fk_invoice_id
foreign key(invoice_id ) references t_invoice(id)
on delete set null;
三、參照字段語法結構
建立外來鍵約束是,外來鍵字段參照父表的主鍵或unique約束字段。這種情況下可以不指定外來鍵參照欄位名,如下:
alter table t_invoice_detail
add constraint fk_invoice_id
foreign key(invoice_id ) references t_invoice;
當沒有指定參照欄位時,預設參照欄位是父表的主鍵。
如果外來鍵字段參照的是unique而非primary key欄位,必須在add constraint語句中指定欄位名。
oracle新增外來鍵約束
alter table gjjy.jy dic crop drop constraint fk zmlb alter table gjjy.jy dic crop drop constraint fk zwlb alter table gjjy.jy dic crop add constraint ...
Oracle表中新增外來鍵約束
新增主鍵約束 alter table ga airline add constraint pk airline id primary key airline id 有三種形式的外來鍵約束 1 普通外來鍵約束 如果存在子表引用父表主鍵,則無法刪除父表記錄 2 級聯外來鍵約束 可刪除存在引用的父表記錄,...
oracle新增外來鍵約束的方法
給表新增外來鍵約束分兩種情況,一種是剛建表的時候直接新增外來鍵約束,另一種則是表已經建立好了再新增外來鍵約束。建表時新增外來鍵約束 create table test a id number not null primary key,name varchar2 50 create table tes...