WEB开发网
开发学院数据库MSSQL Server Sql server 2005 找出子表树 阅读

Sql server 2005 找出子表树

 2008-11-19 10:10:02 来源:WEB开发网   
核心提示:同事在准备新老系统的切换,清空一个表的时候往往发现这个表的主键被另一个表用做外键,Sql server 2005 找出子表树,而系统里有太多层次的引用.所以清起来相当麻烦用下面这个脚本可以做到找出一个特定表的引用树,比如 table2 有个外键引用到了table1table3有个外键饮用到了table2.......C

同事在准备新老系统的切换,清空一个表的时候往往发现这个表的主键被另一个表用做外键,而系统里有太多层次的引用.所以清起来相当麻烦

用下面这个脚本可以做到找出一个特定表的引用树,比如 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 

Tags:Sql server 找出

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接