Sql server 2005找出子表树
2010-07-16 15:44:15 来源:WEB开发网同事在准备新老系统的切换,清空一个表的时候往往发现这个表的主键被另一个表用做外键,而系统里有太多层次的引用.所以清起来相当麻烦
用下面这个脚本可以做到找出一个特定表的引用树,比如 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
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
赞助商链接