删除主子表,存储过程问题,调试通过后就给分.

jinpeng_dotnet 2007-06-22 02:35:19
请问,我想删除数据在存储过程里面而且是主子表的关系:
我要删除主表的数据的同时也要删除子表的数据,但是在删除子表数据的同时必须判断子表是不是被别的表占用了,如果被占用了此条子表记录不能删,其他的可以删.如果字表不被占用的话就主子表一起删了.代码如下:
IF EXISTS(SELECT * FROM BBLTXN WHERE bbl_bok_id != 0)
begin
delete from bokdat where bok_boc_id= @boc_id and bok_id not in (select bbl_bok_id from bbltxn where bbl_bok_id != 0)
RETURN 3
end
else
begin
delete
from bokdat where bok_boc_id=@boc_id
DELETE
FROM BOCMAS
WHERE boc_id = @boc_id
end
...全文
166 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinpeng_dotnet 2007-06-22
  • 打赏
  • 举报
回复
不可以得。呵呵。需求不允许的。我刚才把问题解决掉了,谢谢各位的提示!
dazhong23 2007-06-22
  • 打赏
  • 举报
回复
做个视图不就OK了....
jinpeng_dotnet 2007-06-22
  • 打赏
  • 举报
回复
BOCMAS 主表
bokdat 子表
BBLTXN 有可能被占用的表
jinpeng_dotnet 2007-06-22
  • 打赏
  • 举报
回复
boc_id  主表ID
bok_id  子表ID
bbl_bok_id 可能被占用子表的ID
jinpeng_dotnet 2007-06-22
  • 打赏
  • 举报
回复
就是想在存储过程里实现了^_^嘿嘿.
我想从主表直接删除子表没有别其他表占用的数据:
如果子表数据没有被占用,把子表数据都删除掉,并且把主表也删除掉.
如果子表数据被占用了,把子表没有被占用的数据删除掉,主表不做删除.
另外说明一点,一个主表可以对应N个子表。
chuxue1342 2007-06-22
  • 打赏
  • 举报
回复
你应该先删除子表再删除主表!
Jinglecat 2007-06-22
  • 打赏
  • 举报
回复
不知道到底要干什么
phili1999 2007-06-22
  • 打赏
  • 举报
回复
你最好把这几个表的关系描述一下,不然真无法作答。
根据你的意思是 当前的子表有多个外键关联,那么最简单的办法是先删除子表记录,并捕获约束错误,如果有错则表示有外键关联不能删除。还有个笨的办法就是查询当前子表的外键关联表看看是否有关联数据,当然可以使用个视图来搞定查询。
方案就是这样了,你选一个吧。
jinpeng_dotnet 2007-06-22
  • 打赏
  • 举报
回复
不报错误,就是现在删除没有被占用的数据出问题,如下:
没有被占用的数据主子表应该能一起删除掉的,但是现在子表能删除掉了.主表不能删除了
如果是被占用了的话还是符合逻辑的
jinpeng_dotnet 2007-06-22
  • 打赏
  • 举报
回复
我顶,我顶
yzn800930 2007-06-22
  • 打赏
  • 举报
回复
报什么错误
jinpeng_dotnet 2007-06-22
  • 打赏
  • 举报
回复
在顶下
jinpeng_dotnet 2007-06-22
  • 打赏
  • 举报
回复
顶下

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧