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

2022-02-06 10:54:19 字數 981 閱讀 2042

create table /alter table時可以

[ on delete ]

[ on update ]

如果沒有指定 

on delete

或 on update

,則預設為 

no action

。 on delete no action

指定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外來鍵所引用,則產生錯誤並回滾 delete 語句。

on update no action

指定如果試圖更新某一行中的鍵值,而該行的鍵被其他表的現有行中的外來鍵所引用,則產生錯誤並回滾 update 語句。

cascade

、set null

和set default

允許通過刪除或更新鍵值來影響指定具有外來鍵關係的表,這些外來鍵關係可追溯到在其中進行修改的表。如果為目標表也定義了級聯引用操作,那麼指定的級聯操作也將應用於刪除或更新的那些行。不能為具有 timestamp 列的外來鍵或主鍵指定 cascade。 

on delete cascade

指定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外來鍵所引用,則也將刪除所有包含那些外來鍵的行。 

on update cascade

指定如果試圖更新某一行中的鍵值,而該行的鍵值被其他表的現有行中的外來鍵所引用,則組成外來鍵的所有值也將更新到為該鍵指定的新值。 

注意: 

如果 timestamp 列是外來鍵或被引用鍵的一部分,則不能指定 cascade。

on delete set null

指定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外來鍵所引用,則組成被引用行中的外來鍵的所有值將被設定為 null。為了執行此約束,目標表的所有外來鍵列必須可為空值。

on update set null

指定如果試圖更新某一行,而該行的鍵被其他表的現有行中的外來鍵所引用,則組成被引用行中的外來鍵的所有值將被設定為 null

引自:

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

主鍵 外來鍵和索引的區別?主鍵外來鍵 索引定義 唯一標識一條記錄,不能有重複的,不允許為空 表的外來鍵是另一表的主鍵,外來鍵可以有重複的,可以是空值 該欄位沒有重複值,但可以有乙個空值 作用 用來保證資料完整性 用來和其他表建立聯絡用的 是提高查詢排序的速度 個數 主鍵只能有乙個 乙個表可以有多個外...

主鍵與外來鍵

一 什麼是主鍵 外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中 某乙個屬性組 注意是組 能唯一標識一條記錄 該屬性組就可以成為乙個主鍵 比如 學生表 學號,姓名,性別,班級 其中每個學生的 學號是唯一的,學號就是乙個主鍵 課程表 課程編號 課程名,學分 其中課程編號 是唯一的,課程編號 就是...

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

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