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