识别身份栏?

时间:2009-07-10 12:44:07

标签: sql-server tsql identity

我发现如何使用此查询确定哪些列是给定表的主键列:

 SELECT CONSTRAINT_NAME, COLUMN_NAME
 FROM
 INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
 WHERE TABLE_NAME='tablename_here' AND
 CONSTRAINT_NAME LIKE 'PK_%'

我可以通过使用此查询找到身份种子和增量:

SELECT IDENT_SEED('tablename_here'), IDENT_INCR('tablename_here')

我无法使用约束信息,因为主键约束可以跨多个列。我似乎无法找到任何Transact SQL函数来提供我的身份信息。

有人可以帮我理解如何查找身份信息吗?

我正在使用SQL Server 2000。

3 个答案:

答案 0 :(得分:9)

要查找给定表中的IDENTITY列,您可以使用:

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='tablename_here' 
AND COLUMNPROPERTY(OBJECT_ID('tablename_here'),COLUMN_NAME,'IsIdentity') = 1

答案 1 :(得分:1)

您可以使用COLUMNPROPERTY函数检查列是否使用标识属性。

答案 2 :(得分:1)

SELECT sys.tables.name, sys.columns.name
FROM sys.tables
INNER JOIN sys.columns
ON sys.tables.object_id = sys.columns.object_id
WHERE is_identity = 1
AND sys.tables.name = 'MyTable'