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 

标签:
0
投稿

猜你喜欢

  • 深入浅析Python中的迭代器

    2021-02-20 03:36:43
  • 详解Hadoop 运行环境搭建过程

    2022-08-25 13:50:58
  • 详解mysql 使用left join添加where条件的问题分析

    2024-01-15 18:30:27
  • MySQL因大事务导致的Insert慢实例分析

    2024-01-22 22:07:54
  • Django+zTree构建组织架构树的方法

    2023-08-13 06:17:54
  • django 2.0更新的10条注意事项总结

    2023-05-22 10:48:35
  • Pyqt清空某一个QTreeewidgetItem下的所有分支方法

    2022-01-24 10:29:46
  • js 浏览本地文件夹系统示例代码

    2024-04-17 09:48:23
  • Python使用psutil获取进程信息的例子

    2021-11-03 07:29:47
  • SymPy库关于矩阵的基本操作和运算

    2022-10-30 12:23:55
  • MySQL数据备份之mysqldump的使用方法

    2024-01-17 05:25:46
  • Python中的Socket 与 ScoketServer 通信及遇到问题解决方法

    2021-02-01 04:08:12
  • 在ASP.NET 2.0中操作数据之十:使用 GridView和DetailView实现的主/从报表

    2023-07-02 20:22:40
  • MySQL中对于NULL值的理解和使用教程

    2024-01-27 22:51:02
  • 如何在sae中设置django,让sae的工作环境跟本地python环境一致

    2022-03-09 22:04:54
  • 基于numpy实现逻辑回归

    2023-06-21 10:04:25
  • 平面设计人员必读

    2008-07-16 11:58:00
  • python中pandas.read_csv()函数的深入讲解

    2023-12-27 00:10:32
  • python实现文本进度条 程序进度条 加载进度条 单行刷新功能

    2021-04-06 09:29:53
  • 如何高效地访问记录集?

    2009-11-22 19:25:00
  • asp之家 网络编程 m.aspxhome.com