`
liujianguangaaa
  • 浏览: 235150 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Mysql中的 的 Cascade ,NO ACTION ,Restrict ,SET NULL

阅读更多

外键约束对子表的含义: 
   如果在父表中找不到候选键,则不允许在子表上进行insert/update 

外键约束对父表的含义: 
   在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句, InnoDB支持5种方式, 分列如下 
  
   . cascade方式 
在父表上update/delete记录时,同步update/delete掉子表的匹配记录 
On delete cascade从mysql3.23.50开始可用; on update cascade从mysql4.0.8开始可用 

   . set null方式 
在父表上update/delete记录时,将子表上匹配记录的列设为null 
要注意子表的外键列不能为not null 
On delete set null从mysql3.23.50开始可用; on update set null从mysql4.0.8开始可用 

   . No action方式 
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 
这个是ANSI SQL-92标准,从mysql4.0.8开始支持 

   . Restrict方式 
同no action, 都是立即检查外键约束 

   . Set default方式 
解析器认识这个action,但Innodb不能识别,不知道是什么意思... 
  
   注意:trigger不会受外键cascade行为的影响,即不会解发trigger

 

例子:
ALTER TABLE `quotations` ADD CONSTRAINT `quo_user` FOREIGN KEY (`designer`) REFERENCES `users` (`user_name`) ON DELETE NO ACTION;


分享到:
评论

相关推荐

    mysql中的cascade级联,set null,restrict限制 都是什么意思,有何区别.zip

    在MySQL数据库中,当涉及到表间关系,特别是外键约束时,`CASCADE`, `SET NULL`, 和 `RESTRICT` 是三种常见的操作行为。这些行为定义了如何处理在删除或更新主表(父表)记录时,与之相关联的从表(子表)的记录。...

    MySQL中利用外键实现级联删除、更新

    在创建索引时,可以指定在删除、更新父表时,对子表进行的相应操作,包括 RESTRICT、NO ACTION、SET NULL 和 CASCADE。其中 RESTRICT 和 NO ACTION 相同,是指在子表有关联记录的情况下父表不能更新;CASCADE 表示父...

    mysql内外键使用

    ON DELETE {CASCADE | RESTRICT | SET NULL | NO ACTION} ON UPDATE {CASCADE | RESTRICT | SET NULL | NO ACTION} ); ``` 其中,`child_table`是子表,`parent_table`是父表,`column_name`是子表中作为外键的列...

    mysql外键的使用

    [ON DELETE {CASCADE | RESTRICT | SET NULL | NO ACTION}] [ON UPDATE {CASCADE | RESTRICT | SET NULL | NO ACTION}] ); ``` 这里,`child_table`是子表,`parent_table`是父表,`foreign_key_column`是子表中...

    mysql-存储引擎-实验四.docx

    在 MySQL 中,外键的规则可以使用 RESTRICT、CASCADE、SET NULL、NO ACTION 等关键字来指定。 8. 设置外键禁用,对(7)做相应操作后,说明现象和原因。 在实验中,我们设置了外键禁用,并对学生表中学号执行了增...

    MYSQL 高级篇之数据库搜索引擎及原理

    在创建索引时, 可以指定在删除、更新父表时,对子表进行的相应操作,包括 RESTRICT、CASCADE、SET NULL 和 NO ACTION。 RESTRICT和NO ACTION相同, 是指限制在子表有关联记录的情况下, 父表不能更新; CASCADE...

    MySQL使用外键实现级联删除与更新的方法

    在创建索引的时候,可以指定在删除、更新父表时,对子表进行的相应操作,包括RESTRICT、NO ACTION、SET NULL和CASCADE。其中RESTRICT和NO ACTION相同,是指在子表有关联记录的情况下父表不能更新;CASCADE表示父表在...

    MySql外键设置详解

    [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}] [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}] 其中,on delete/on update 用于定义 delete、update 操作。 三、外键的约束类型 外键的...

    MySQL外键详解

    [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}] [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]; ``` - **约束类型**: - **CASCADE**:当父表的外键关联列被更新或删除时,子表中的外键...

    mysql外键教程.zip

    2. **禁止操作(No Action 或 Restrict)**:这是默认的行为,如果试图在主表中删除或更新会导致子表中相关记录违反外键约束的操作,那么这个操作会被阻止。这样可以避免破坏数据的完整性。 3. **子表设为空(Set ...

    mysql外键设置

    [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}] [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]; ``` 其中: - `yourtablename`:指需要添加外键约束的表名。 - `index_col_name`:指被...

    mysql级联更新和级联删除

    4. **NO ACTION**:类似于RESTRICT,但只在删除或更新操作之前检查是否有相关行存在。 5. **SET DEFAULT**:将子表中的外键字段设置为其默认值。 #### 五、示例代码解析 1. **插入数据**: ```sql INSERT INTO ...

    MySQL.pptx

    [ON DELETE { CASCADE | SET NULL | NO ACTION | RESTRICT }] [ON UPDATE { CASCADE | SET NULL | NO ACTION | RESTRICT }]; ``` - **建表时添加外键**: ```sql CREATE TABLE infos ( Name CHAR(10) ...

    Mysql增加外键的方法

    常见的触发限制参数有ON DELETE和ON UPDATE,它们可以设置成多种参数,包括CASCADE(级联删除或更新)、RESTRICT(限制删除或更新)、SET NULL(将引用列置为空)和SET DEFAULT(设置默认值)。不加参数时,默认行为...

    MySQL外键使用详解

    ON DELETE {CASCADE | RESTRICT | SET NULL | NO ACTION} ON UPDATE {CASCADE | RESTRICT | SET NULL | NO ACTION} ); ``` 例如,创建一个名为`temp`的表,其`id`字段为外键,引用`outTable`表的`id`字段: ```sql...

    掌握数据完整性:深入理解MySQL中的外键

    - **SET NULL**:将从属表中的外键字段设置为NULL。 - **NO ACTION**:不执行任何操作。 - **RESTRICT**:限制删除或更新操作,除非从属表中的外键字段已经被删除或更新。 例如,如果希望在删除部门时自动删除该...

    mysql的外键

    - `NO ACTION`:与`RESTRICT`类似,但在某些数据库系统中提供更精确的控制。 5. **修改和删除外键** - 使用`ALTER TABLE`语句可以添加、修改或删除外键约束。 - 删除外键约束时,应先确保没有相关记录,以避免...

    mysql第三阶段

    4. NO ACTION(在MySQL中等同于RESTRICT):遵循同样的规则。 表级约束和列级约束的差异在于作用范围。列级约束是在创建或修改列时定义的,而表级约束则独立于列,可以应用于多个列或表的特定条件。 修改数据表...

    关于MySQL外键的简单学习教程

    ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT} ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT} ``` - `RESTRICT`:阻止父表的更新或删除,如果这会导致子表中...

Global site tag (gtag.js) - Google Analytics