mysql的常见的外键约束
Posted 健康平安的活着
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql的常见的外键约束相关的知识,希望对你有一定的参考价值。
一 mysql的常见的外键约束策略
设计外键时,mysql提供了4种外键关联策略
1、RESTRICT 限制(默认)
如果有外键关联了tb_class 的id,则tb_class 不能删除被关联的记录、不能更新关联记录deptId字段的值(会报错)。
2、CASCADE 级联
删除tb_class 中的记录时,会自动删除tb_student中与之关联的记录;修改tb_class中tb_student字段的值时,会自动修改tb_student中与之关联的记录的外键字段的值(同步变化)。
3、NO ACTION 不做处理
删除、更新tb_class中的id字段的值时,tb_student中与之关联的记录不作任何处理。此种策略需要存储引擎支持,如果存储引擎不支持,会自动换为RESTRICT。
4、SET NULL 置为NULL
删除tb_student的记录,或者更新id字段的值,会自动将tb_student中与之关联的记录的外键字段的值置为NULL。
二 案例
1.新建一个tb_class 和一个tb_student表
CREATE TABLE `tb_class` (
`id` int(11) NOT NULL,
`class_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tb_student` (
`id` int(11) NOT NULL,
`sname` varchar(255) DEFAULT NULL,
`cid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `cid` (`cid`),
CONSTRAINT `tb_student_ibfk_1` FOREIGN KEY (`id`) REFERENCES `tb_class` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.首先需要添加数据时候,修改数据,删除数据时候,都必须先把父表进行操作,直接操作子表,则报错:
2.直接删除父表,有子表的引用,不让删除
以上是关于mysql的常见的外键约束的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 中的外键约束错误 1452 - Magento 导入