博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

查询表内属于主键的列-SQLServer2005

Posted on 2008-04-24 09:30  懒人ABC  阅读(1540)  评论(0编辑  收藏  举报
查询主键的列,将用到sys.indexes和sys.index_columns两个视图。
sys.indexes主要保存索引和主键等值,并保存有判断是否为主键的列。
sys.index_columns主要用保存sys.indexes视图内对应的主键等列的index_id的信息。

具体实现为:

select t4.name as columnname from --t4.name 列名
sys.tables t1                                  --t1 存储对应数据库里所有用户表

left outer join
sys.indexes t2                                --t2 存储对应数据库里所有索引和主键
on
t1.object_id = t2.object_id              --object_id 表对象相应的编号

left outer join
sys.index_columns t3                     --index_columns 表索引及主键相应的列信息
on
t2.object_id = t3.object_id
and t2.index_id = t3.index_id

left outer join
sys.columns t4                              --t4 存储数据库内所有用户表的列值信息
on
t3.object_id = t4.object_id
and t3.column_id = t4.column_id

where
t1.name = 'M_Class'                      -- t1.name 表名
and t2.is_primary_key = 1             -- t2.is_primary_key 是否为主键

order by t4.column_id                   -- 按照列编号进行输出