存储过程获取表被引用的信息

可能题目取得不是很好,但我想看了文章就知道什么意思。
当你想删除一个表时,可能被其他表作为外键被引用,此时你想删除此表是删除不掉的。你必须把那引用此表为外键的表删掉,才能把你要删的表的删掉。可能文字不好表达。我就举个例子
当b,c表引用a表作为外键,你想删a表的某些数据,就一定要删除相关的b,c中引用a表的数据。可是b,c表可能又被其他表引用,这样肯定会导致一个递归。
如果按正常方法去删a表,你可能写删除语句来删除a表,但执行时会报错说那个表引用了此表,此时你根据报错信息会找到引用的表,又删除,又报错,又根据信息查找,此时我感觉很麻烦。
我就自己写了个存储过程。

按理来说要获取引用表的信息应该用递归来解决最好,但我试过,感觉在数据库中运用得没有c#好,才改变策略用过程来写。

代码如下

 

 

 

Code

 返回的结果有几个字段,其中Level表示表被引用的深度,就是b,c引用a,d引用b,f引用c,则b,c表的深度是1,d,f表的深度是2.此时删a表直接可以从d,f开始删,从深度高到低来删表。还一个字段是PK_NAME表示那些表引用了要删的表。其他字段应该很清楚。

不知道谁能用递归实现此功能

 

posted @   潇潇息一去不复返  阅读(1961)  评论(6编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
努力才能前进,勤耕博客才能看远
点击右上角即可分享
微信分享提示