如何設定主鍵和外來鍵,實現級聯更新 級聯刪除

2021-08-03 04:03:59 字數 1546 閱讀 5355

主鍵、外來鍵和索引的區別?

主鍵外來鍵

索引定義:

唯一標識一條記錄,不能有重複的,不允許為空

表的外來鍵是另一表的主鍵, 外來鍵可以有重複的, 可以是空值

該欄位沒有重複值,但可以有乙個空值

作用:用來保證資料完整性

用來和其他表建立聯絡用的

是提高查詢排序的速度

個數:主鍵只能有乙個

乙個表可以有多個外來鍵

乙個表可以有多個惟一索引

設定索引

若要設定外來鍵,在參照表(pc表)  和被參照表(parts表)中,相對應的兩個字段必須都設定索引(index)。

對parts表:

alter table parts add index idx_model (model);

這句話的意思是,為parts表增加乙個索引,索引建立在model欄位上,給這個索引起個名字叫idx_model。

對pc表也類似:

alter table pc add index idx_cpumodel (cpumodel);

定義外來鍵

下面為兩張表之間建立前面所述的那種「約束」。因為pc的cpu型號必須參照parts表中的相應型號,所以我們將pc表的cpumodel欄位設定為「外來鍵」(foreign key),即這個鍵的參照值來自於其他表。

alter table pc add constraint fk_cpu_model

foreign key (cpumodel)

references parts(model);

級聯操作

級聯更新:更新主鍵時,外來鍵也隨之更新。

可以在定義外來鍵的時候,在最後加入這樣的關鍵字:

on update cascade;

即在主表更新時,子表(們)產生連鎖更新動作,似乎有些人喜歡把這個叫「級聯」操作。

如果把這語句完整的寫出來,就是:

alter table pc add constraint fk_cpu_model

foreign key (cpumodel)

references parts(model)

on update cascade;

級聯刪除:刪除主鍵時,外來鍵也隨之刪除。

alter table pc add constraint fk_cpu_model

foreign key (cpumodel)

references parts(model)

on delete cascade;

級聯更新、刪除:

on update cascade on delete cascade
sqlserver2005設定級聯刪除、級聯更新 

在使用linq時,

資料庫中有表外來鍵關聯時,刪除操作有時會出錯,儘管還可以用sql語句,但有時將這種操作交給資料庫,會節省很多開銷。

一、選擇"關係"

按照上面的方法,將資料庫中所有表都更改一遍,這樣在linq中刪除時,資料庫便自動級聯刪除了

主鍵自增長 外來鍵約束 級聯更新

1 自動增長 配合int型別的主鍵使用,自增後的id值取決於上一條 1 如果某一列是數值型別的,使用auto increment可以來完成值的自動增長 2 建立表時,新增自動增長 create table stu 3 刪除自動增長 alter table stu modify id int 4 新增...

主鍵與外來鍵之間的級聯設定

create table alter table時可以 on delete on update 如果沒有指定 on delete 或 on update 則預設為 no action on delete no action 指定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外來鍵所引用,則產生錯...

Oracle外來鍵級聯刪除和級聯更新

oracle在外鍵的刪除上有no action 類似restrict cascade和set null三種行為。下面以學生 班級為例說明不同情況下的外來鍵刪除,學生屬於班級,班級的主鍵是學生的外來鍵。班級表 crate table tb class id number not null,班級主鍵 n...