mysql中的级联删除的语句_请数据库高手写一个级联删除的SQL 语句!谢谢

我刚毕业。我也是刚开始工作。

@parentId 是我申明的一个变量,用于存储,主表中的Id。

大致的意思:

1.游标遍历主表中的每一行数据,同行,遍历一行,就存储一下,把主表的主键Id存储在@parentId中。

2.删除子表中外键Id=@parentId的数据

3.删除主表主键Id=@parentId的数据

我写的这个有一个BUG,要修改下,不然就把所有数据都删除掉了。

改成这样

declare cur_test Cursor

for (select id from zyy_user where 条件)

就是,你想删除,主表中的那条数据,所关联的子表数据(不知道是不是说的有点绕)

说到这里,其实该把上面这些代码都放在一个存储过程里面,这个存储过程有一个输入参数。

代码如下:

create proc proc_test

@Id --你想删除的主表数据的主键(Id)号

as

declare cur_test Cursor

for (select id from zyy_user where id=@Id)

open cur_test

declare @praentId int

fetch next from cur_test into @parentId

while(@@fetch_status=0)

begin

delete from zyy_manage_user where id=@parentId--这行的id一定是字表的外键

delete from zyy_user where id=@parentId

fetch next from cur_test into @parentId

end

close cur_test

deallocate cur_test

begin

end

hibernate,我个人也很不喜欢,性能真的很低。我的老师,以前说过这样一句话,改变了我对数据库的看法。

“不要什么事,都放在代码里做。数据库能做很多事,你不充分利用它,那你还用什么数据库?”

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值