如何确定SQL Server 2000表中ROWGUIDCOL
列的名称?
我尝试翻阅syscolumns
,例如:
SELECT *
FROM syscolumns
WHERE id = OBJECT_ID('Currencies')
但那里没有任何内容,或the MSDN page上看起来像rowguidcol
。
在SQL Server 2005中,您只需查询sys.columns
,例如:
SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID('Currencies')
AND is_rowguidcol = 1
容易狡猾。
答案 0 :(得分:5)
您使用COLUMNPROPERTY:
SELECT COLUMNPROPERTY(id, name, 'IsRowGuidCol'), * FROM syscolumns ... ;
以原始问题的格式:
SELECT *
FROM syscolumns
WHERE id = OBJECT_ID('dbo.Currencies')
AND COLUMNPROPERTY(id, name, 'IsRowGuidCol') = 1;
答案 1 :(得分:2)
对于初学者,如果您不知道rowguid列并且想要选择它(但不需要知道其名称是出于任何其他原因而不是选择它),您可以这样做:
SELECT $rowguid FROM YourTable;
如果表没有rowguid列:
rowguid
的列,其值为0.00
。Invalid column name '$rowguid'
。为了完整性,请注意在SQL 2005及更高版本中,您还可以使用$identity
获取表的标识列,而不知道其名称。在SQL 2000中,您得到Incorrect syntax near the keyword 'identity'.