当前位置:首页 » 编程语言 » sql语句实现级联删除操作
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql语句实现级联删除操作

发布时间: 2022-05-22 05:33:09

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的记录,也就说明级联删除成功。

❷ 如何在sql中实现级联删除

比如,你要删帖子号为X的话,先删回复表中所有帖子号为X的回复,再删帖子表里帖子号为X的帖子。
语法么就是:delete from 表名 where 帖子号=X
或者 你设置一个触发器(trigger),当删除帖子表中的帖子前,回复表里该帖子的回复也删掉(注意触发器的时间要定在贴子表中删除帖子前删除回复,因为回复表中的帖子号是外键)。

❸ SQL数据库里怎样执行级联删除>

建立关系(外键)的时候选择“级联删除”,删除的时候只需要操作主表,子表就不用管了,自动喀嚓。

❹ SQL server中怎么修改级联删除修改

在创建表的时候就需要设置级联删除和级联更新(修改)。方法如下:

altertableSZ_Picture
addconstraintFK_SZ_PICTU_RELATIONS_SZ_PICTUforeignkey(pictureTypeId)
referencesSZ_PictureType(pictureTypeId)
--其中这句就是级联更新和级联删除

级联删除:

删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。

级联更新:

更新主键值的操作,该值由其它表的现有行中的外键列引用。在级联更新中,更新所有外键值以与新的主键值相匹配。

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

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

主外键的用用到的!当你设置主外键时可以选择是否进行级联删除,级联更新;当删除或更新主键表中的记录时,sql会自动删除或者更新该主键所对应外键表中的记录。具体的情况你可以测试一下!

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

❽ sql2000 如何用触发器实现级联删除

下面是在user表上建立触发器的语句,在topic上建触发器的语句类似
CREATE
TRIGGER
deleteuser
ON
[dbo].[user]
INSTEAD
OF
DELETE
AS
DECLARE
@id
int;
--把数据类型改成与user_id一致
SELECT
@id=user_id
from
deleted;
DELETE
FROM
UT
WHERE
user_id=@id;
DELETE
FROM
user
WHERE
user_id=@id;
你把级联
DELETE

UPDATE取消掉就行了

❾ sql sever2005 如何在建好“关联”中实现“级联删除”

1、选择主键表, 右键修改表
2、在表中点击右键关系
3、选定关系名称, 右边属性窗口
表设计器->INSERT 和 UPDATE 规范->删除规则 选择 层叠

在删除主键表中数据时, 可以实现级联删除表中数据

❿ 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