CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

如何判断表中某个字段是主键?

楼主niuniu777(孤独人生(▼▼▼▼▼))2005-01-28 16:40:55 在 MS-SQL Server / 应用实例 提问

知道表名,如何判断表中某个字段是主键? 问题点数:20、回复次数:2Top

1 楼Qihua_wu(小吴)回复于 2005-01-28 16:49:28 得分 5

select   count(*)   from   sysobjects   where   xtype   =   'PK'   and   parent_obj   in   (select   id   from   sysobjects   where   name=表名   and   xtype   =   'U')   and   name   =   '字段'  
   
   
  select   count(*)   from   sysobjects   where   xtype   =   'PK'   and   parent_obj   =   object_id(表名)   and   name   =   '字段'  
   
   
  count(*)   >0则该字段是,否在不是  
  Top

2 楼daijingjie2002(艰苦创业)回复于 2005-01-28 16:51:45 得分 15

SELECT    
    表名=case   when   a.colorder=1   then   d.name   else   ''   end,  
    表说明=case   when   a.colorder=1   then   isnull(f.value,'')   else   ''   end,  
    字段序号=a.colorder,  
    字段名=a.name,  
    标识=case   when   COLUMNPROPERTY(   a.id,a.name,'IsIdentity')=1   then   '√'else   ''   end,  
    主键=case   when   exists(SELECT   1   FROM   sysobjects   where   xtype='PK'   and   name   in   (  
      SELECT   name   FROM   sysindexes   WHERE   indid   in(  
        SELECT   indid   FROM   sysindexkeys   WHERE   id   =   a.id   AND   colid=a.colid  
      )))   then   '√'   else   ''   end,  
    类型=b.name,  
    占用字节数=a.length,  
    长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),  
    小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),  
    允许空=case   when   a.isnullable=1   then   '√'else   ''   end,  
    默认值=isnull(e.text,''),  
    字段说明=isnull(g.[value],'')  
  FROM   syscolumns   a  
    left   join   systypes   b   on   a.xusertype=b.xusertype  
    inner   join   sysobjects   d   on   a.id=d.id     and   d.xtype='U'   and     d.name<>'dtproperties'  
    left   join   syscomments   e   on   a.cdefault=e.id  
    left   join   sysproperties   g   on   a.id=g.id   and   a.colid=g.smallid      
    left   join   sysproperties   f   on   d.id=f.id   and   f.smallid=0  
    --where   d.name='table_name'             --如果要查询特定table,加上这句  
  order   by   a.id,a.colorderTop

相关问题

  • 如何判断表中某个字段是主键?(续)------daijingjie2002(艰苦创业) 进!
  • 删除原表主键、字段,修改字段等SQL语句,只能执行一次,如何加入判断,让它更灵活?
  • 删除原表主键、字段,修改字段等SQL语句,只能执行一次,如何加入判断,让它更灵活?
  • 如何通过系统表判断一个字段是否为主键?在线等待
  • 如何将表中的字段设为关键字段?
  • Access表中 哪个字段是主键
  • 求救!!!!如何判断字段是否是主键?
  • 怎么判断表中某字段的数据类型?
  • 如果判断表中某一字段是否存在?
  • 怎么判断数据表中某个字段是否存在?

关键词

  • 字段
  • 表
  • colorder
  • columnproperty
  • xtype
  • colid
  • 表名
  • pk
  • left join
  • where

得分解答快速导航

  • 帖主:niuniu777
  • Qihua_wu
  • daijingjie2002

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo