最后,我们可以用一个流程图来总结 ON DELETE RESTRICT 的流程: 是否创建 parent 表和 child 表设置 ON DELETE RESTRICT 约束插入数据尝试删除 parent 表中的记录是否存在引用该记录的子表数据拒绝删除删除成功删除 通过上面的流程图,可以清晰地看到 ON DELETE RESTRICT 的工作流程。 结论 通过本文的介绍,我们详细了解...
步骤2:设置 ON DELETE RESTRICT 在设置外键约束时,需要明确指定ON DELETE RESTRICT,示例代码如下: ALTERTABLEtable2ADDCONSTRAINTfk_table1_idFOREIGNKEY(table1_id)REFERENCEStable1(id)ONDELETERESTRICT; 1. 2. 3. 4. 5. 通过以上代码,我们明确指定了table2表中的table1_id列在删除时使用ON DELETE RESTRICT约束...
ON DELETE restrict(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。 no action:意思同restrict.即如果存在从数据,不允许删除主数据。 cascade(级联):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即...
先看On Delete属性,可能取值如上图为:No Action, Cascade,Set Null, Restrict属性。 当取值为No Action或者Restrict时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。 当取值为Cascade时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应...
On Delete和On Update都有Restrict,No Action, Cascade,Set Null属性。现在分别对他们的属性含义做个解释。 ON DELETE restrict(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。 no action:意思同restrict.即如果存在从数据,不允许删除主数据。
前一种情况,在外键定义中,我们使用ON UPDATE CASCADE ON DELETE RESTRICT;后一种情况,可以使用ON UPDATE CASCADE ON DELETE CASCADE。 InnoDB允许你使用ALTER TABLE在一个已经存在的表上增加一个新的外键: ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) RE...
如果您不希望删除子表中的相关记录,请改用ON DELETE SET NULL操作。MySQL会将子表中的外键列值设置为NULL删除父表中的记录时,条件是子表中的外键列必须接受NULL值。请注意,如果您使用ON DELETE NO ACTION或ON DELETE RESTRICT操作,MySQL将拒绝删除。 ON UPDATE子句使您可以指定更新父表中的行时子表中的行会...
FOREIGN KEY (parent_id) REFERENCES parent_table(id) ON DELETE CASCADE ON UPDATE CASCADE; 2. NO ACTION(无动作/默认行为) 行为描述:在MySQL中,NO ACTION实际上等同于RESTRICT,这意味着如果试图删除或更新父表中一行数据,而该行在子表中有对应关联项,操作会被拒绝,以防止违反外键约束。
在上述SQL语句中,on delete restrict 是指明在删除时外键会对该删除操作进行限制,而on update cascade是指名在更新时会对该更新操作进行同步。 (三)在创建数据表后添加外键约束 同样的,MySQL也支持在创建数据表后再添加外键约束。在上例中,我们先删除grade表,然后再创建grade表,现不创建外键,尝试在创建grade表后添...
则不允许对父表对应候选键进行update/delete操作这个是ANSI SQL-92标准,从mysql4.0.8开始支持 4 Restrict方式同no action, 都是立即检查外键约束 . Set default方式解析器认识这个action,但Innodb不能识别,不知道是什么意思... 注意:trigger不会受外键cascade行为的影响,即不会解发trigger ...