MySQL外來鍵約束OnDelete和OnUpdate的使用
-
On Delete和On Update都有Restrict,No Action, Cascade,Set Null屬性。現在分別對他們的屬性含義做個解釋。
ON DELETErestrict(約束):當在父表(即外來鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則不允許刪除。
no action:意思同restrict.即如果存在從資料,不允許刪除主資料。
cascade(級聯):當在父表(即外來鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則也刪除外來鍵在子表(即包含外來鍵的表)中的記錄。
set null:當在父表(即外來鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則設定子表中該外來鍵值為null(不過這就要求該外來鍵允許取null)
restrict(約束):當在父表(即外來鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則不允許更新。
no action:意思同restrict.
cascade(級聯):當在父表(即外來鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則也更新外來鍵在子表(即包含外來鍵的表)中的記錄。
set null:當在父表(即外來鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則設定子表中該外來鍵值為null(不過這就要求該外來鍵允許取null)。
注:NO ACTION和RESTRICT的區別:只有在及個別的情況下會導致區別,前者是在其他約束的動作之後執行,後者具有最高的優先權執行。
相關推薦
MySQL外來鍵約束OnDelete和OnUpdate的使用
On Delete和On Update都有Restrict,No Action, Cascade,Set Null屬性。現在分別對他們的屬性含義做個解釋。 ON DELETE restrict(約束):當在父表(即外來鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應
[轉]MySql外來鍵約束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用
MySQL有兩種常用的引擎型別:MyISAM和InnoDB。目前只有InnoDB引擎型別支援外來鍵約束。InnoDB中外來鍵約束定義的語法如下: ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [ind
【0016】MySQL外來鍵約束刪除時和更新時各取值的含義
1、準備測試工作 建立2個表,分別為studnet 學生表和monitor 班長表 學生表有學號和姓名2個屬性; 班長表有班級和學號2個屬性。 班長表設定外來鍵學號,連線主表學生表的學號屬性。 並插入資料如圖: 2、刪除時屬性,可能取值如上圖為:預設(RESTR
MySql 外來鍵約束 FOREIGN KEY REFERENCES 之 空、RESTRICT、NO ACTION、CASCADE、SET NULL 等型別分析和作用解讀
主表,從表【MySql】 空、RESTRICT、NO ACTION 刪除:從表記錄不存在時,主表才可以刪除。刪除從表,主表不變 更新:從表記錄不存在時,主表才可以更新。更新從表,主表不變 CASCADE 刪除:刪除主表時自動刪除從表。刪除從表,主表不變 更新:更新主表時自
MySQL外來鍵約束On Delete和On Update的詳解
ON DELETE restrict(約束):當在父表(即外來鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則不允許刪除。 no action:意思同restrict.即如果存在從資料,不允許刪除主資料。 cascade(級聯):當在父表(即外來鍵
Mysql外來鍵約束之CASCADE、SET NULL、RESTRICT、NO ACTION
Mysql中有目前只有InnoDB引擎支援外來鍵約束,InnoDB中外來鍵約束定義的語法如下: ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_NAME] (index_col_name, ...
MySQL外來鍵約束_ON DELETE CASCADE/ON UPDATE CASCADE
MySQL通過外來鍵約束實現資料庫的參照完整性,外來鍵約束條件可在建立外來鍵時指定,table的儲存引擎只能是InnoDB,因為只有這種儲存模式才支援外來鍵。 外來鍵約束條件有以下4種: (1)restrict方式:同no action,都是立即檢查外來鍵約束; -
MySQL外來鍵約束
刪除時屬性,可能取值如上圖為:預設(RESTRICT),RESTRICT,No ACTION,CASCADE,SET NULL屬性。 當取值為No Action或者Restrict時,則當在父表(即外來鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外
MySQL外來鍵約束的禁用與啟用命令
MySQL外來鍵約束的禁用與啟用: MySQL外來鍵約束是否啟用是通過一個全域性變數標示的: FOREIGN_KEY_CHECKS=0; 禁用狀態 FOREIGN_KEY_CHECKS=1; 啟用狀態 檢視當前FOREIGN_KEY_CHECKS的值可用如下命令: SELECT
MySQL .外來鍵約束
InnoDB也支援外來鍵約束。InnoDB中對外來鍵約束定義的語法看起來如下: [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...) REFERENCES tbl_name (index_col_n
MySQL外來鍵約束_ON DELETE CASCADE/ON UPDATE CASCADE(級聯刪除,刪除主表資料,附表資料也被刪除)
MySQL通過外來鍵約束實現資料庫的參照完整性,外來鍵約束條件可在建立外來鍵時指定,table的儲存引擎只能是InnoDB,因為只有這種儲存模式才支援外來鍵。 外來鍵約束條件有以下4種: (1)restrict方式:同no action,都是立即檢查外來鍵約束; - - 限制
MySQL:簡述MySQL外來鍵約束
MySQL:簡述MySQL的外來鍵約束 MySQL有兩種常用的引擎型別:MyISAM和InnoDB。目前只有InnoDB引擎型別支援外來鍵約束。 一、外來鍵約束的含義: 1. 外來鍵約束對
【MySQL-效能優化】--MySQL外來鍵約束簡述
建立表users CREATE TABLE users( id int AUTO_INCREMENT PRIMARY KEY, authority cha
資料庫MySQL之如何刪除主鍵、唯一和外來鍵約束?
如何刪除主鍵、唯一和外來鍵約束? 文章目錄 如何刪除主鍵、唯一和外來鍵約束? 刪除約束 1. 刪除主鍵約束: 2. 刪除唯一約束: 3. 刪除外來鍵約束: 刪除約束 約束的 index_n
mysql啟動和關閉外來鍵約束的方法(FOREIGN_KEY_CHECKS)
在MySQL中刪除一張表或一條資料的時候,出現[Err] 1451 -Cannot delete or update a parent row: a foreign key constraint fai
mysql中新增外來鍵約束失敗(cannot add foreign key constraint)
mysql中新增外來鍵約束遇到一下情況: cannot add foreign key constraint 出現這個問題一般是開發工作者對外來鍵的使用出現了疏忽,我們先清晰一下外來鍵的使用: 1. 外來鍵欄位不能為該表的主鍵; 2. 外來鍵欄位參考欄
mysql之外來鍵約束
1.什麼是外來鍵 A表的主鍵,在B表中欄位出現,就是外來鍵。 2.什麼是約束:約束是一種限制,它通過對錶的行貨列的資料做出限制,來確保表的資料的完整性、唯一性。 3.以上1和2結合一起就是外來鍵約束。即:foreign key 4.具體操作 4.1建立表時,同時建
SQL的主鍵和外來鍵約束
SQL的主鍵和外來鍵的作用: 外來鍵取值規則:空值或參照的主鍵值。
建立和測試觸發器:向SC表插入資料時,檢查插入資料的課程號是否存在於Course表中(建立之前刪除Cno的外來鍵約束,比較外來鍵約束和觸發器之間的不同)
alter table SC Drop constraint FK_SC--刪除外來鍵約束 CREATE TRIGGER trig_insert ON SC--在SC表中建立trig_insert觸發器 AFTER INSERT--insert為觸發事件,after則為觸發的時機
資料庫MySQL之如何使用外來鍵約束?
資料庫MySQL之如何使用外來鍵約束? 文章目錄 1. 外來鍵約束的使用要求: 2. 測試: 1. 外來鍵約束的使用要求: 父表和子表必須使用相同的儲存引擎,不能使用臨時表 資料儲存引擎必須為INNODB型別 外