当前位置:首页 » 编程语言 » sql级联删除语句

sql级联删除语句

发布时间: 2023-08-08 03:56:00

A. sql server中如何级联删除

可以用下边的方法,仅供参考:

--创建测试主表.ID是主键.
CREATETABLEtest_main(
idINTNOTNULL,
valueVARCHAR(10),
PRIMARYKEY(id)
);


--创建测试子表.
CREATETABLEtest_sub(
idINTNOTNULL,
main_idINT,
valueVARCHAR(10),
PRIMARYKEY(id)
);


--插入测试主表数据.
INSERTINTOtest_main(id,value)VALUES(1,'ONE');
INSERTINTOtest_main(id,value)VALUES(2,'TWO');

--插入测试子表数据.
INSERTINTOtest_sub(id,main_id,value)VALUES(1,1,'ONEONE');
INSERTINTOtest_sub(id,main_id,value)VALUES(2,2,'TWOTWO');

然后,创建外键,使用ONDELETECASCADE选项,删除主表的时候,同时删除子表

ALTERTABLEtest_subADDCONSTRAINTmain_id_consFOREIGNKEY(main_id)REFERENCEStest_mainONDELETECASCADE;

执行删除:

DELETEFROMTEST_MAINWHEREID=1;

最后:

SELECT*FROMTEST_MAIN;

结果子表中就只有ID=2的记录,也就说明级联删除成功。

B. SQL sever中要删除两个相关联的表该怎么进行级联删除

------解决方案-------------------------------------------------------- --1、建立一个触发器(推荐)
create trigger on p for deleteas �0�2delete from spj where pno = (select pno from deleted)go--执行删除delete from p where pname='螺丝'
--2、级联删除
alter table p add constraint pk_p_id primary key (pno)go--为tb创建外健,并指定级联删除
alter table spj add constraint fk_spj_aid foreign key (pno) references p(pno) on delete cascadego------解决方案----------------------------------------------------------推荐触发器控制,可控性比较强
SQL code --1、建立一个触发器(推荐) create trigger on p for delete as delete from spj where pno = (select pno from deleted) go --执行删除 delete from p where pname='螺丝' --2、级联删除 alter table p add constraint pk_p_id primary key (pno) go --为tb创建外健,并指定级联删除 alter table spj add constraint fk_spj_aid foreign key (pno) references p(pno) on delete cascade go
------解决方案--------------------------------------------------------建立测试数据
SQL code if object_id('dbo.SPJ') is not null drop table dbo.SPJ; go if object_id('dbo.P') is not null drop table dbo.P; go create table dbo.P ( pno int not null primary key, pname nvarchar(20) not null ); go create table dbo.SPJ ( sno int not null primary key, pno int not null ); insert into dbo.P select 1, 'type-a' union all select 2, 'type-b' union all select 3, 'type-c'; go insert into dbo.SPJ select 1, 1 union all select 2, 1 union all select 3, 1 union all select 4, 2 union all select 5, 3 union all select 6, 3; go
------解决方案--------------------------------------------------------建议用外键约束
先删除子表在删除父表
------解决方案-------------------------------------------------------- �0�2个人建议用事务处理。

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

级联删除你可以把它认为是一个触发器,也就是你删除主表中的数据,那么从表中的相关联的也就一起删除了。。。看个例子:======================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希望回答对你有所帮助........

D. 如何使用一条sql语句删除多张表中的数据

在源表中使用触发器,把这些相应表都一并删除。
或是设置主外键,使之级联删除。

E. 级联删除

级联删除(cascade delete)隶属于约束条件(constraint),因此,级联删除需要在约束条件中设置。

在 FOREIGN KEY 中加入 ON DELETE CASCADE 可以实现级联删除,但磨哗是在执行 SQL 语瞎明行句时,SQL Server 返回结果为仅有一行数据受到影响,而实际在本例中有三行数据(槐升 STUDENT 中一行, ENROLLMENT 中两行)受到影响,所以级联删除不会通知操作者其他表中是否有数据受到影响。

F. sql多表关联删除

删除多表关联数据的三种方法

1、级联删除

createtablea
(
idvarchar(20)primarykey,
passwordvarchar(20)notnull
)
createtableb
(
idintidentity(1,1)primarykey,
namevarchar(50)notnull,
userIdvarchar(20),
foreignkey(userId)referencesa(id)ondeletecascade
)



表B创建了外码userId 对应A的主码ID,声明了级联删除

测试数据:

insertavalues('11','aaa')
insertavalues('23','aaa')
insertbvalues('da','11')
insertbvalues('das','11')
insertbvalues('ww','23')


删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了

deleteawhereid='11'


2、采用存储过程

A表:AID Aname 主健:AID

B表:BID BelongAID Bname 主健:BID,外健:BelongAID

C表:CID BelongBID Cname 主健:CID,外健:BelongBID

D表:DID BelongCID Dname 主健:DID,外健:BelongCID

其中:

A表和B表通过A.AID和B.BelongAID 创建了外健关系

B表和C表通过B.BID和C.BelongBID 创建了外健关系

C表和D表通过C.CID和D.BelongCID 创建了外健关系


3、采用触发器

删除Class表中的一条记录的同时删除该记录Class_No字段值在Student表中对应的记录。

CreateTriggerClass_delete
onClass
fordelete
as
begin
deletefromStudent
whereClass_No=(selectClass_Nofromdeleted)
end

G. SQL 怎么级联删除语句

方法一:
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
方法二:用数据库触发器

热点内容
安卓如何设置桌面返回键 发布:2025-02-06 13:58:15 浏览:48
bi可视化php 发布:2025-02-06 13:50:15 浏览:931
shell写脚本文件 发布:2025-02-06 13:47:32 浏览:231
健身器材脚本 发布:2025-02-06 13:46:36 浏览:856
怎么从手机里卸载存储卡 发布:2025-02-06 13:35:04 浏览:644
诛仙青云志2ftp 发布:2025-02-06 13:34:48 浏览:34
mill91编程 发布:2025-02-06 13:10:27 浏览:294
华为平板怎么储存服务器文件 发布:2025-02-06 12:49:21 浏览:482
php查询结果数组 发布:2025-02-06 12:31:05 浏览:717
怎样把照片压缩打包 发布:2025-02-06 12:15:19 浏览:498