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.直接删除父表,有子表的引用,不让删除

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值