删除主子表,存储过程问题,调试通过后就给分.
请问,我想删除数据在存储过程里面而且是主子表的关系:
我要删除主表的数据的同时也要删除子表的数据,但是在删除子表数据的同时必须判断子表是不是被别的表占用了,如果被占用了此条子表记录不能删,其他的可以删.如果字表不被占用的话就主子表一起删了.代码如下:
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
------解决方案--------------------报什么错误
------解决方案--------------------你最好把这几个表的关系描述一下,不然真无法作答。
根据你的意思是 当前的子表有多个外键关联,那么最简单的办法是先删除子表记录,并捕获约束错误,如果有错则表示有外键关联不能删除。还有个笨的办法就是查询当前子表的外键关联表看看是否有关联数据,当然可以使用个视图来搞定查询。
方案就是这样了,你选一个吧。
------解决方案--------------------你应该先删除子表再删除主表!
------解决方案--------------------做个视图不就OK了....