1. 程式人生 > >MySQL外來鍵約束OnDelete和OnUpdate的使用

MySQL外來鍵約束OnDelete和OnUpdate的使用

On Delete和On Update都有Restrict,No Action, Cascade,Set Null屬性。現在分別對他們的屬性含義做個解釋。

ON DELETE

restrict(約束):當在父表(即外來鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則不允許刪除。

no action:意思同restrict.即如果存在從資料,不允許刪除主資料。

cascade(級聯):當在父表(即外來鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則也刪除外來鍵在子表(即包含外來鍵的表)中的記錄。

set null:當在父表(即外來鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則設定子表中該外來鍵值為null(不過這就要求該外來鍵允許取null)

ON UPDATE

restrict(約束):當在父表(即外來鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則不允許更新。

no action:意思同restrict.

cascade(級聯):當在父表(即外來鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則也更新外來鍵在子表(即包含外來鍵的表)中的記錄。

set null:當在父表(即外來鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外來鍵,如果有則設定子表中該外來鍵值為null(不過這就要求該外來鍵允許取null)。

注:NO ACTION和RESTRICT的區別:只有在及個別的情況下會導致區別,前者是在其他約束的動作之後執行,後者具有最高的優先權執行。

相關推薦

MySQL外來約束OnDeleteOnUpdate的使用

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 DeleteOn 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型別 外