前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL外键约束On Update和On Delete的使用说明

MySQL外键约束On Update和On Delete的使用说明

原创
作者头像
Power
发布2025-03-05 11:45:18
发布2025-03-05 11:45:18
5400
代码可运行
举报
运行总次数:0
代码可运行

https://cloud.tencent.com/On Update和On Delete是SQL语言的一个标准,用于数据库外键定义,设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则。

On Update表示主键表中被参考字段的值被更新时,On Delete表示主键表中被参考字段的值被删除时。

语法:

代码语言:javascript
代码运行次数:0
复制
foreign key (foreign_key_id) references table(primary_key_id) on update/delete parameter

其中parameter有no action , set null , set default ,cascade四个选项,分别表示:

1.no action 表示 不做任何操作,

2.set null 表示在外键表中将相应字段设置为null

3.set default 表示设置为默认值

4.cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除。

级联更新时,依据的是之前匹配的数据,在主表更新关联的外键字段的值后,系统自动更新从表的相应外键字段的值,而不是其他未设置为主外键关联的字段,不是主外键关联的字段不受影响。

示例:

代码语言:javascript
代码运行次数:0
复制
create table a
(
  id varchar(20) primary key,
  password varchar(20) not null
)
代码语言:javascript
代码运行次数:0
复制
create table b
(
 id int identity(1,1)  primary key,
 name varchar(50) not null,
 pid varchar(20),
 foreign key (pid) references a(id) on delete cascade
)

表a:

id

password

20200001

123456

20200002

654321

表b:

id

name

pid

1

腾讯云开发者社区

20200001

2

https://cloud.tencent.com/

20200001

3

https://cloud.tencent.com/

20200002

执行删除语句:

代码语言:javascript
代码运行次数:0
复制
delete a where id='20200001'

表a:

id

password

20200002

654321

表b:

id

name

pid

3

https://cloud.tencent.com/

20200002

当我们删除表a内id为‘20200001’的数据,发现表b内pid 为“20200001”的两条数据也被数据库自动删除了,这就是级联删除

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档