看Sql server 2005 找出子表树_Mssql数据库教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:解读动态SQL语句的编程
动态SQL语句中的参数,我们可以通过两种途径来为它赋值: 1. 利用参数编辑器(Parameter Editor)来为参数赋值 具体方法是:选中TQuery部件,单击鼠标右键,然后从中选择Define Pa

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

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

分享:SQL Server 2008 层次ID数据类型
目录 准备工作1 练习:使用HierarchyID数据类型2 准备工作 预计完成本实验所需的时间 40 分钟 目标 在完成本实验后,您将可以: 处理SQL Server 2008当中的层次ID数

来源:模板无忧//所属分类:Mssql数据库教程/更新时间:2009-08-01
相关Mssql数据库教程