第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > mysql on update on delete_MySQL外键约束On Update和On Delete的使用说明

mysql on update on delete_MySQL外键约束On Update和On Delete的使用说明

时间:2020-05-19 11:08:47

相关推荐

mysql on update on delete_MySQL外键约束On Update和On Delete的使用说明

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

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

语法:

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 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除。

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

示例:

create table a

(

id varchar(20) primary key,

password varchar(20) not null

)

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

0001

123456

0002

654321

表b:

id

name

pid

1

零五科技

0001

2

0001

3

0002

执行删除语句:

delete a where id='0001'

表a:

id

password

0002

654321

表b:

id

name

pid

3

0002

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。