如何在SQL Server 2000表中获取ROWGUIDCOL?

时间:2012-07-20 17:55:26

标签: sql-server sql-server-2000 uniqueidentifier

如何确定SQL Server 2000表中ROWGUIDCOL列的名称?

我尝试翻阅syscolumns,例如:

SELECT *
FROM syscolumns
WHERE id = OBJECT_ID('Currencies')

但那里没有任何内容,或the MSDN page上看起来像rowguidcol


在SQL Server 2005中很容易

在SQL Server 2005中,您只需查询sys.columns,例如:

SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID('Currencies')
AND is_rowguidcol = 1

容易狡猾。

2 个答案:

答案 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列:

  • 在SQL 2000中,您将获得一个名称为rowguid的列,其值为0.00
  • 在SQL 2005及更高版本中,您将收到错误Invalid column name '$rowguid'

为了完整性,请注意在SQL 2005及更高版本中,您还可以使用$identity获取表的标识列,而不知道其名称。在SQL 2000中,您得到Incorrect syntax near the keyword 'identity'.