我有一個主鍵標識表:如何查找SQL Server列是否是單個SQL語句中的主鍵?
SELECT
so.name AS TableName,
sc.colid AS Id, sc.name AS Name,
sc.xtype AS TypeId, sc.prec AS Precision, sc.scale AS Scale,
sc.iscomputed AS IsComputed,
sc.isnullable AS IsNullable,
sc.collation AS Collation
FROM syscolumns sc
JOIN sysobjects so ON sc.id = so.id
WHERE so.xtype = 'U' AND so.name = 'Person'
我也可以得到所有的主鍵:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='Person' AND xtype='U')
CREATE TABLE Person (
Id INT PRIMARY KEY NOT NULL,
Name NVARCHAR(50) NOT NULL,
Age INTEGER NOT NULL);
GO
爲此,我可以使用下面的查詢得到的所有列細節使用:
SELECT *
FROM sysobjects so
WHERE xtype = 'PK'
AND so.parent_obj IN (SELECT id FROM sysobjects WHERE xtype = 'U' AND name = 'Person')
但我無法弄清楚如何將它們全部結合起來,以便我可以有效地唱歌使用簡單的布爾或甚至,標誌指示列是否是主鍵。
喜歡的東西:
SELECT
so.name AS TableName,
sc.colid AS Id, sc.name AS Name,
sc.xtype AS TypeId,
sc.prec AS Precision, sc.scale AS Scale,
sc.iscomputed AS IsComputed,
sc.isnullable AS IsNullable,
sc.collation AS Collation,
???isPrimaryKey???
...
任何幫助是非常讚賞。
從SQL Server ** 2005 **或更新版本開始,建議使用'sys.'模式目錄視圖 - 不能舊的'sysobjects'和'syscolumns'等(這些將被逐步淘汰) –