(3-2)MySQL 外键约束的参照操作

目录

1 概述

2 CASCADE操作

2.1 记录插入操作

2.2 记录的删除操作

3 参考


1 概述

    以下操作是指进行了外键约束的创建之后,在更新表的时候,子表是否也进行相应的操作。

(1)CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行。

(2)SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL 关键字。 

(3)RESTRICT:拒绝对父表的删除或更新操作。

(4)NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同。

2 CASCADE操作

2.1 记录插入操作

(1)对父表的操作

CREATE TABLE users1(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(10) NOT NULL,
pid SMALLINT UNSIGNED,
FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE
);

在子表进行记录的插入操作前,必须先在父表中插入记录(原因是,父表是子表的参照),所以,先在users1的父表provinces中插入记录。

表provinces 的字段

在父表provinces中任意插入几个字段:

INSERT provinces(pname) VALUES("A");
INSERT provinces(pname) VALUES("B");
INSERT provinces(pname) VALUES("C");

查看表结构:SELECT * FROM provinces;

表provinces 的记录

(2) 对子表的操作

插入两条记录:

INSERT users1(username,pid) VALUES("Tom",3);
INSERT users1(username,pid) VALUES("Join",7);

由于父表不存在id为7的记录,所以在子表插入pid字段为7的记录时会报错。 

 

插入两条记录(后者报错)

再向子表插入记录:

INSERT users1(username,pid) VALUES("Join",1);
INSERT users1(username,pid) VALUES("Rose",3); 

2.2 记录的删除操作

首先查看父表与子表记录的情况:

父表与子表记录的情况

在父表删除一条记录(id=4的记录)

DELETE FROM provinces WHERE id = 4;

再一次查看两张表的记录情况:

删除父表字段后,父子表的记录情况

3 参考

整理自:慕课网——外键约束的参照操作 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值