sql中级联删除,级联更新是怎么理解的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中级联删除,级联更新是怎么理解的?相关的知识,希望对你有一定的参考价值。

以使用的SqlServer为例,在management studio中 打开对应数据库的diagram,在相关表的任意一张上右键,选择relationship,弹出如下对话框。

将Delete Rule 和 Update Rule 改为cascade即可。

或者直接写SQL语句也可以,在外键关系声明的后面加上 ON UPDATE CASCADE ON DELETE CASCADE 即可。

如:alter table SZ_Picture

   add constraint FK_SZ_PICTU_RELATIONS_SZ_PICTU foreign key (pictureTypeId)

      references SZ_PictureType (pictureTypeId)

         on update cascade on delete cascade

当然如果是使用powerDesigner生成数据库的话也可以通过在PDM中修改relationship的方法来生成级联关系。

首先在PDM中两个表的relationship上双击,弹出如下对话框,选择Integrity 选项卡,将Update constraint 和Delete constraint下的cascade选上即可。

参考技术A 主外键的用用到的!当你设置主外键时可以选择是否进行级联删除,级联更新;当删除或更新主键表中的记录时,SQL会自动删除或者更新该主键所对应外键表中的记录。具体的情况你可以测试一下! 参考技术B 级联删除你可以把它认为是一个触发器,也就是你删除主表中的数据,那么从表中的相关联的也就一起删除了。。。看个例子:======================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,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)
表B创建了外码userId 对应A的主码ID,声明了级联删除
测试数据:
insert a values ('11','aaa')
insert a values('23','aaa')
insert b values('da','11')
insert b values('das','11')
insert b values('ww','23')
删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除
delete a where id='11'=============================================================级联更新也大同小异。。只是关键字为:on update希望回答对你有所帮助........

以上是关于sql中级联删除,级联更新是怎么理解的?的主要内容,如果未能解决你的问题,请参考以下文章

如何理解access设置中的“级联更新”和“级联删除”?

SQL 怎么级联删除语句

SQL 怎么级联删除语句

SQL数据库怎么进行多表级联更新,求个存储过程

sql级联更新和级联删除不起作用

数据库中啥是“级联更新关联字段”和“级联删除关联字段”