Sql server 2005 找出子表树
作者:Tianjon 来源:博客园 时间:2008-11-24 15:23:00
同事在准备新老系统的切换,清空一个表的时候往往发现这个表的主键被另一个表用做外键,而系统里有太多层次的引用.所以清起来相当麻烦
用下面这个脚本可以做到找出一个特定表的引用树,比如 table2 有个外键引用到了table1 table3有个外键饮用到了table2 .......
Code
declare @tbname nvarchar(256);
set @tbname=N'dbo.aspnet_Applications';
with fkids as
(
select
object_id(CONSTRAINT_NAME) as FkId,
object_id(UNIQUE_CONSTRAINT_NAME) AS PkId
from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
)
,realations as
(
select p.parent_object_id as pktableId
,f.parent_object_id as fktableid
,i.pkid,i.fkid
from
fkids i inner join sys.objects p on i.pkid=p.[object_id]
inner join sys.objects f on i.fkid=f.[object_id]
)
,cte as
(
select * from realations where pktableid=object_id(@tbname)
union all
select r.* from cte c join realations r on r.pktableid=c.fktableid
)
select
object_name(pktableid) as pktable
,object_name(fktableid) as fktable
,object_name(pkid) as pk
,object_name(fkid) as fk from cte


猜你喜欢
深入浅析Python中的迭代器

详解Hadoop 运行环境搭建过程
详解mysql 使用left join添加where条件的问题分析

MySQL因大事务导致的Insert慢实例分析

Django+zTree构建组织架构树的方法

django 2.0更新的10条注意事项总结
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
js 浏览本地文件夹系统示例代码
Python使用psutil获取进程信息的例子
SymPy库关于矩阵的基本操作和运算
MySQL数据备份之mysqldump的使用方法
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
在ASP.NET 2.0中操作数据之十:使用 GridView和DetailView实现的主/从报表

MySQL中对于NULL值的理解和使用教程
如何在sae中设置django,让sae的工作环境跟本地python环境一致
基于numpy实现逻辑回归
