SQL 怎么级联删除语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 怎么级联删除语句相关的知识,希望对你有一定的参考价值。
三个表A→B→C(A对B是一对多,B对C是一对多)
我想删除A表的一条数据后 级联删除B表和 B表多对应的数据
例:就是(删除 火车表 的一条数据) 删除后,会(删除所有的车厢表),删除后, 会删除所有的车厢椅子......
谢谢大家 急用
MSSQLSERVER是支持级联更新和级联删除的,你要在建立外键的时候,要指定
EP:
alter table tb_userroles
add constraint FK_TB_USERR_RELATIONS_TB_FUNCT foreign key (gnbm)
references tb_function (gnbm)
on update cascade on delete cascade
方法二:用数据库触发器 参考技术A 你是什么数据库,Oracle的话,如果父表和子表之间有外键约束关系,那么可以再删除主表指定的数据的时候,加上ON DELETE CASCADE ,当父表记录删除的时候自动删除子表中的相应记录. 参考技术B 级联删除在建表的时候就应该指定。 参考技术C 触发器中处理
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 怎么级联删除语句的主要内容,如果未能解决你的问题,请参考以下文章