20

我想获取特定表的当前标识值,例如 sql server 中的 IDENT_CURRENT('table')

4

8 回答 8

27

如果要获取特定表的最后一个标识插入值,请使用以下语句:

select IDENT_CURRENT('tablename')

例如:

select IDENT_CURRENT('Employee')
于 2016-10-20T09:53:24.260 回答
7
SELECT IDENT_SEED(TABLE_SCHEMA+'.'+TABLE_NAME) AS Seed,
IDENT_INCR(TABLE_SCHEMA+'.'+TABLE_NAME) AS Increment,
IDENT_CURRENT(TABLE_SCHEMA+'.'+TABLE_NAME) AS Current_Identity,
TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE OBJECTPROPERTY(OBJECT_ID(TABLE_SCHEMA+'.'+TABLE_NAME), 'TableHasIdentity') = 1
AND TABLE_TYPE = 'BASE TABLE'
于 2013-07-09T08:59:41.163 回答
6

要检查身份:

    DBCC CHECKIDENT ('[schema].[YourTableName]', NORESEED);

要重新设定身份:

    DBCC CHECKIDENT ('[schema].[YourTableName]', RESEED, value);
于 2018-07-18T06:49:40.493 回答
3
SELECT AUTOINC_SEED 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='TableName' 
AND COLUMN_NAME='ColumnName'

如果您要查找的是身份列的种子值(即身份列的第一个值曾经是或将要是什么),那么来自Hamid 的回答很好,但是如果您正在寻找下一个值插入的行将是,这是您要使用的查询:

SELECT AUTOINC_NEXT 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='TableName' 
AND COLUMN_NAME='ColumnName'
于 2014-10-28T13:04:07.553 回答
1

如果你想在 INSERT 之后使用它,你可以使用

SELECT @@IDENTITY

否则,您必须使用:

SELECT MAX(Id) FROM Table
于 2013-07-09T09:34:23.727 回答
1
SELECT IDENT_CURRENT('tableName or ViewName')

前任:

SELECT IDENT_CURRENT('Student')
于 2020-02-25T07:54:39.373 回答
0
SELECT AUTOINC_SEED 
FROM INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME='tablename' 
and COLUMN_NAME='columnName'
于 2013-07-09T09:17:08.997 回答
-1
DECLARE @v_identity
SELECT @v_identity = ISNULL(MAX([index]), 0) + 1
FROM [dbo].[Table]
SELECT @v_identity
于 2016-04-05T05:57:13.593 回答