Je souhaite obtenir la valeur d'identité actuelle d'une table spécifique Identique à IDENT_CURRENT ("table") dans le serveur SQL
SELECT AUTOINC_SEED
FROM INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tablename'
and COLUMN_NAME='columnName'
Si vous souhaitez obtenir une dernière valeur insérée pour une table particulière, utilisez l'instruction suivante:
select IDENT_CURRENT('tablename')
Par exemple:
select IDENT_CURRENT('Employee')
SELECT IDENT_SEED(TABLE_NAME) AS Seed,
IDENT_INCR(TABLE_NAME) AS Increment,
IDENT_CURRENT(TABLE_NAME) AS Current_Identity,
TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE OBJECTPROPERTY(OBJECT_ID(TABLE_NAME), 'TableHasIdentity') = 1
AND TABLE_TYPE = 'BASE TABLE'
SELECT AUTOINC_SEED
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='TableName'
AND COLUMN_NAME='ColumnName'
from La réponse de Hamid est correcte si ce que vous recherchez correspond à la valeur initiale de la colonne identité (c.-à-d. quelle est la toute première valeur de la colonne identité a été ou sera), mais si vous recherchez quelle sera la prochaine valeur d'une ligne insérée, voici la requête que vous souhaitez utiliser:
SELECT AUTOINC_NEXT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='TableName'
AND COLUMN_NAME='ColumnName'
Pour vérifier l'identité:
DBCC CHECKIDENT ('[schema].[YourTableName]', NORESEED);
Pour réensemencer l'identité:
DBCC CHECKIDENT ('[schema].[YourTableName]', RESEED, value);
Si vous le voulez juste après un INSERT, vous pouvez utiliser
SELECT @@IDENTITY
Sinon, vous devez utiliser:
SELECT MAX(Id) FROM Table
DECLARE @v_identity
SELECT @v_identity = ISNULL(MAX([index]), 0) + 1
FROM [dbo].[Table]
SELECT @v_identity