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
投稿

猜你喜欢

  • 在SQL Server 2000数据仓库中使用分区

    2008-12-23 13:52:00
  • Asp函数介紹(37个常用函数)

    2011-04-11 11:06:00
  • 表单设计中的网页视觉体验

    2008-06-26 13:35:00
  • 在IE6中用PNG图片实现半透明效果

    2008-05-30 13:14:00
  • oracle-快速删除重复的记录

    2008-01-16 19:12:00
  • 细化解析:SQL Server数据库的集群设计

    2009-02-05 15:59:00
  • Access秘密技巧和陷阱

    2008-04-12 14:55:00
  • MySQL中随机生成固定长度字符串的方法

    2010-12-08 16:25:00
  • url传递中文的解决方案

    2007-10-09 20:17:00
  • MySQL两种表存储结构性能比较测试过程

    2007-12-09 12:45:00
  • 浅论网站用户粘性的提高和增强

    2008-05-15 07:14:00
  • 学习完全掌握纯CSS布局网页

    2008-05-28 17:14:00
  • Oracle 9i产品文档

    2010-07-16 13:35:00
  • SQL Server数据库连接中常见的错误分析

    2009-01-15 12:51:00
  • Oracle轻松取得建表和索引的DDL语句

    2009-02-26 10:26:00
  • asp入门之字符串函数介绍示例

    2008-11-04 20:18:00
  • MySQL数据库备份和还原的常用命令

    2012-01-05 18:50:06
  • 页面无刷新调用数据(IFRAME+js)

    2009-06-01 11:29:00
  • XML HttpRequst对象学习

    2007-10-12 19:04:00
  • MSSQL中部分字段重复数据的删除方法

    2008-12-29 13:59:00
  • asp之家 网络编程 m.aspxhome.com