是否可以编写一个确定表是否具有主键的查询?
SELECT * FROM sysobjects WHERE id = OBJECT_ID('TRS') and xtype = PK
如果它没有主要版本,那么它将不返回任何内容。
在这篇link中,作者谈到了使用Xtype
,但似乎这是一个古老的术语。
答案 0 :(得分:3)
如果有主键,这将为您提供密钥及其列名称,否则无效。
SELECT sysobjects.name, syscolumns.name
FROM
sysobjects INNER JOIN
syscolumns ON syscolumns.id = sysobjects.id INNER JOIN
syskeys ON syskeys.id = sysobjects.id
WHERE
sysobjects.type = 'U' AND syskeys.type = 1