在sql中,请问怎样才能查询一个表格中是否有主键,并且哪一个栏位是主键

在sql中,请问怎样才能查询一个表格中是否有主键,并且哪一个栏位是主键,第1张

利用用户约束视图来查看:

select from user_constraints t

where tconstraint_type='P'

其中'P'为主键

为了确定是哪一列,再关联视图 user_cons_columns:

select towner, tconstraint_name, ttable_name, scolumn_name, sposition

from user_constraints t, user_cons_columns s

where tconstraint_type = 'P'

and ttable_name = stable_name

其中的 sposition是指表中的第几列,即第几栏位是主键。满足你的要求

这样就能很容易地查出

插入一条记录后想要立刻获取其数据表中的sql server主键返回值。这个主键是自动生成的,其实实现的方式有很多,比如再进行一次查询,获取出来。或者在插入数据之前取出最大值,在最大值上面加一等等,方法很多,但是有些很不方便。

个人感觉最快的方式就是,在插入数据后直接获取sql server主键的值,然后返回过来。

方法如下:

sql语句如下:

INSERT INTO tableName (fieldname ) values (value ) SELECT @@IDENTITY AS returnName;

在sql语句中加入SELECT @@IDENTITY AS returnName;用来获取sql server主键的值

在程序中获取返回值:

public int sqlexecutereader(string sql) { DBopen(); SqlCommand myComm = new SqlCommand(sql, Connection); int newID = ConvertToInt32(myCommExecuteScalar()); DBclose(); return newID; }

当然在此处主键是int类型的自动增加的。DBopen();DBclose();的 *** 作在此就不多说了。

SELECT

表名=case when acolorder=1 then dname else '' end,

字段序号=acolorder,

字段名=aname,

标识=case when COLUMNPROPERTY( aid,aname,'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 = aid AND colid=acolid

))) then '√' else '' end,

类型=bname,

占用字节数=alength,

长度=COLUMNPROPERTY(aid,aname,'PRECISION'),

小数位数=isnull(COLUMNPROPERTY(aid,aname,'Scale'),0),

允许空=case when aisnullable=1 then '√'else '' end,

默认值=isnull(etext,'')

FROM syscolumns a

left join systypes b on axtype=bxusertype

inner join sysobjects d on aid=did and dxtype='U' and dname<>'dtproperties'

left join syscomments e on acdefault=eid

order by aid,acolorder

WHERE id = Object_id('表名')改这样试试User1和User4是主键,这样去查询的话得到的主键是User1、User2回答: 给你一句很给力的SELECT 表名 = case when acolorder=1 then dname else '' end, 表说明 = case when acolorder=1 then isnull(fvalue,'') else '' end, 字段序号 = acolorder, 字段名 = aname, 标识 = case when COLUMNPROPERTY( aid,aname,'IsIdentity')=1 then '√'else '' end, 主键 = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=aid and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = aid AND colid=acolid))) then '√' else '' end, 类型 = bname, 占用字节数 = alength, 长度 = COLUMNPROPERTY(aid,aname,'PRECISION'), 小数位数 = isnull(COLUMNPROPERTY(aid,aname,'Scale'),0), 允许空 = case when aisnullable=1 then '√'else '' end, 默认值 = isnull(etext,''), 字段说明 = isnull(g[value],'') FROM syscolumns a left join systypes b on axusertype=bxusertype inner join sysobjects d on aid=did and dxtype='U' and dname<>'dtproperties' left join syscomments e on acdefault=eid left join sysproperties g on aid=gid and acolid=gsmallid left join sysproperties f on did=fid and fsmallid=0 where dname='要查询的表' --如果只查询指定表,加上此条件 order by aid,acolorder 补充: SELECT TABLE_NAME,COLUMN_NAME

Select

col_name(object_id('表'),colid) 主键字段

From sysobjects as o

Inner Join sysindexes as i On iname=oname

Inner Join sysindexkeys as k On kindid=iindid

Where

oxtype = 'PK' and parent_obj=object_id('表') and kid=object_id('表')

sql中的主键是指数据表的主关键词,用于唯一标识一个行,自带一级索引效果。

主关键字(主键,primarykey)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。主键可以由一个字段,也可以由多个字段组成,分别称为单字段主键或多字段主键,又称主码。

并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。

扩展资料:

主键挑选的原则:

1、主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

2、永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。

3、主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

不是一句SQL能够做到,而需要写个脚本,通过循环使用index_col函数测试字段是否属于主键来实现,具体写法可以参考sp_helpindex学习得到。

use sybsystemprocs

execute sp_helptext sp_helpindex

列出sp_helpindex的原始脚本

以上就是关于在sql中,请问怎样才能查询一个表格中是否有主键,并且哪一个栏位是主键全部的内容,包括:在sql中,请问怎样才能查询一个表格中是否有主键,并且哪一个栏位是主键、sqlserver怎么获取主键的值、sql 查询 一个数据库中的所有主键等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9479941.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存