`

Mysql FOREIGN KEY Constraints

阅读更多

InnoDB 支持 foreign key constraints.

constraint definition in InnoDB looks like this:

[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION

在InnoDB引擎中,

1.constranint [symbol] 中symbol如果指定必须唯一。

2.要建立外键,必须对外键和它参照的列上建立索引。

3.外键可以参照一列或几列,并且参照的列和外键可以是在不同的表中,也可以是同一个表。

可选择的外键约束种类有,RESTRICT | CASCADE | SET NULL | NO ACTION 四种。

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

外键约束对父表的含义:
   在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,

父表的行为取决于:在定义子表的外键时指定的on update/on delete子句,

InnoDB支持4种方式, 分列如下 
   . cascade方式
在父表上update/delete记录时,同步update/delete掉子表的匹配记录,

Both ON DELETE CASCADE and ON UPDATE CASCADE are supported.  
Note:cascaded foreign key actions do not activate triggers
   . set null方式
在父表上update/delete记录时,将子表上匹配记录的列设为null
要注意子表的外键列不能设置为not null。

Both ON DELETE SET NULL and ON UPDATE SET NULL clauses are supported. 
 
   . Restrict方式

拒绝在父表上的删除或更新,此时如果我们将忽略其他定义在其上的约束如(ON DELETE or ON UPDATE clause)

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

在Mysql 中 Restrict  和No action 的意义是一样的。

参见 Mysql Manual:  Foreign Key constraint

分享到:
评论

相关推荐

    InnoDB 中文参考手册

    MySQL 的企业级解决方案,高实用性以及强健的数据完整性 MySQL 事务,行级锁定,热备份以及外键支持 - - 无需损失 MySQL 的高速性能 ...InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。

    mysql安装innodb插件

    在MySQL数据库系统中,InnoDB存储引擎是非常重要的一种类型,它支持事务处理(Transactions)、行级锁定(Row-Level Locking)以及外键约束(Foreign Key Constraints),这些特性使得InnoDB成为大多数应用场景中的...

    MySQL数据库学习之旅

    数据完整性可以通过设置约束(Constraints)来实现,例如 PRIMARY KEY、FOREIGN KEY、UNIQUE KEY 等。 知识点七:测试题 测试题是 MySQL 数据库学习的重要部分,用于检测学习者的知识掌握程度。测试题可以涵盖 ...

    mysql-5.5.37.tar.gz

    还增加了Full-Text Search(全文搜索)和Foreign Key Constraints(外键约束)功能。 2. 并发性能优化:改进了线程池管理和查询缓存,提高了多用户环境下的性能。 3. 查询性能提升:通过优化查询执行器和改进索引...

    InnoDB中文参考手册

    InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。 InnoDB 的设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。 在技术上,InnoDB 是一套放在...

    MySQL中外键约束的参照动作(Referential Action)

    本文参考资料为MySQL官方参考手册MySQL 8.0 Reference Manual条目13.1.20.6 FOREIGN KEY Constraints (吐槽一句,这个referential action我真不知道应该翻译成什么,网络上好像也没有统一的叫法,教材上它直接不配...

    mysql中国省市县列表

    2. 关联查询:利用外键约束(Foreign Key Constraints)确保数据的一致性和完整性,通过省份ID和城市ID进行关联查询。 3. 数据更新:由于行政区划可能会发生变化,因此需要定期更新这些数据以保持准确性。 4. 性能...

    连接MYSQL数据库.docx

    这里的`TableName`是你要创建的表名,`Column1`, `Column2`等是表中的列名,`datatype`是对应的列数据类型,`constraints`可以是NOT NULL、UNIQUE、FOREIGN KEY等约束条件。 **运行SQL脚本** 除了手动输入SQL命令...

    MySQL外键约束的禁用与启用命令

    在MySQL数据库系统中,外键约束(Foreign Key Constraints)是一种重要的数据完整性机制,它确保了表之间的参照完整性,即一个表中的数据只能引用另一个表中存在的数据。外键约束可以防止非法数据的插入,保证数据库...

    MySQL网络数据库指南

    - **外键(Foreign Key)**:用于建立表之间的关联。 ### MySQL的基本操作 1. **创建数据库**: ```sql CREATE DATABASE database_name; ``` 2. **选择数据库**: ```sql USE database_name; ``` 3. **创建...

    mysql结构提取器

    4. **外键(Foreign Key)**:用于实现表与表之间的关联,通常用来实现数据库的参照完整性。 5. **约束(Constraints)**:包括非空约束、唯一约束、检查约束等,用于限制数据输入的规则。 6. **触发器(Triggers...

    mysql创建表.docx

    - **`FOREIGN KEY`**:用于建立表之间的关联。 - **`CHECK`**:定义字段的有效范围或规则。 - **`DEFAULT`**:为字段提供默认值。 #### 五、创建更复杂的表 在实际应用中,可能需要创建包含更多字段或复杂约束的表...

    How Can I Make it Faster to Import Data into MySQL Server

    4. **外键检查(FOREIGN KEY constraints)**:对于含有外键约束的表,可以在导入期间暂时关闭外键检查,以便更快地完成导入。 5. **批量插入(Multiple Insert Statements)**:使用批量插入语句代替单条记录的...

    MySQL数据库的基本操作

    CONSTRAINT key_name FOREIGN KEY(child_col_name) REFERENCES parent_table_name(parent_col_name) ``` **2. 设置存储引擎** MySQL支持多种存储引擎,常见的有InnoDB、MyISAM和MEMORY等。不同的存储引擎适用于...

    完整版MySQL基础学习超级详细.docx

    8. **约束(Constraints)**:如主键(PRIMARY KEY)、唯一性(UNIQUE)、外键(FOREIGN KEY)等,用于保证数据的完整性和一致性。 **表的创建与管理** 1. **创建表**:使用`CREATE TABLE`定义表结构,包含字段名...

    Mysql数据库主要系统表说明

    - **Constraint_type**: 约束类型,可能的值包括'PRIMARY KEY'、'FOREIGN KEY'、'UNIQUE'、'CHECK'等。 #### STATISTICS 表 `STATISTICS` 表提供了关于表索引的信息。 **字段说明:** - **Table_catalog**: 数据...

    SQL的高级功能.pdf

    - 外键码约束(Foreign Key Constraints):确保数据的引用完整性,定义表间关系。 - 非空值约束(NOT NULL Constraints):确保字段不接受空值。 - CHECK约束:用于限制列的值必须满足的条件。 - 断言约束...

    mysql学习l笔记

    ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES referenced_table(referenced_column); ``` - **示例**: ```sql ALTER TABLE stud_table ADD CONSTRAINT fk_dept FOREIGN KEY (系部...

    mysql详细整理笔记

    - **外键约束**:`FOREIGN KEY` 维护表间关系的一致性。 - **检查约束**:虽然MySQL不直接支持,但可以通过触发器实现。 - **使用INFORMATION_SCHEMA表**:查询表的约束信息,如`information_schema.table_...

    MySQL数据库应用案例视频教程下载第22讲 论坛管理系统数据库设计.zip

    同时,通过外键约束(Foreign Key Constraints)来维护数据的一致性和完整性,如帖子表中的主题ID和用户ID应与主题表和用户表的主键关联。 此外,还要考虑性能优化,比如使用索引(Indexes)加速查询,尤其是对经常...

Global site tag (gtag.js) - Google Analytics