小新技术网WWW.XKER.ORG 学无止境,我们永远在路上。在路上,是生命的远行,是为温暖身边人!
操作系统 - 编程开发 - 聊天软件 - 网络 - 站长之家 - 工具软件 - 办公 - 图像动画 - 安全 - 网页设计 - 硬件 - 服务器 - 存储 - 手机 - 资讯 - 下载
您现在所在的位置:小新技术网 > 编程开发 > 浏览内容:Sql server 2005 找出子表树

Sql server 2005 找出子表树

小新技术网 XKER.ORG 2008-11-21 来源/作者:Tianjon博客 收藏本页
 同事在准备新老系统的切换,清空一个表的时候往往发现这个表的主键被另一个表用做外键,而系统里有太多层次的引用.所以清起来相当麻烦

  用下面这个脚本可以做到找出一个特定表的引用树,比如 table2 有个外键引用到了table1 table3有个外键饮用到了table2 .......

  Code

declare@tbnamenvarchar(256);
set@tbname=N'dbo.aspnet_Applications';
with fkidsas
(
  select 
  object_id(CONSTRAINT_NAME)asFkId,
  object_id(UNIQUE_CONSTRAINT_NAME)ASPkId
  fromINFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
)
,realationsas
(
  selectp.parent_object_idaspktableId
  ,f.parent_object_idasfktableid
  ,i.pkid,i.fkid
  from
  fkidsiinnerjoinsys.objectsponi.pkid=p.[object_id]
  innerjoinsys.objectsfoni.fkid=f.[object_id]
)
,cteas
(
  select *fromrealationswherepktableid=object_id(@tbname)
  unionall
  selectr.*fromctecjoinrealationsr onr.pktableid=c.fktableid
)
select
object_name(pktableid)aspktable
,object_name(fktableid)asfktable
,object_name(pkid)aspk
,object_name(fkid)asfkfromcte 

【重要声明】:小新技术网刊载此文仅为提供更多信息目的,并不代表小新技术网同意文章的说法或描述,也不构成任何建议,对本文有任何异议,请在下面提出建议。
发表意见(提示:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。)
  • 排行
  • 推荐
  • 最新