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 新增...