【发布时间】:2013-06-18 00:06:46
【问题描述】:
是否可以编写一个查询来确定表是否有主键?
SELECT * FROM sysobjects WHERE id = OBJECT_ID('TRS') and xtype = PK
如果它没有主节点,那么它不会返回任何内容。
在link 中,作者提到了使用Xtype,但它似乎是一个古老的术语。
【问题讨论】:
是否可以编写一个查询来确定表是否有主键?
SELECT * FROM sysobjects WHERE id = OBJECT_ID('TRS') and xtype = PK
如果它没有主节点,那么它不会返回任何内容。
在link 中,作者提到了使用Xtype,但它似乎是一个古老的术语。
【问题讨论】:
如果有主键,这会给你键和它的列名,否则什么都没有。
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
【讨论】: