web-dev-qa-db-fra.com

Comment obtenir le numéro d'identité actuel d'une table spécifique dans SQL Server compact

Je souhaite obtenir la valeur d'identité actuelle d'une table spécifique Identique à IDENT_CURRENT ("table") dans le serveur SQL

11
Hamid
SELECT AUTOINC_SEED 
FROM INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME='tablename' 
and COLUMN_NAME='columnName'
1
Hamid

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')
16
Samba
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'
5
Md. Parvez Alam
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'
2
Alex

Pour vérifier l'identité: 

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

Pour réensemencer l'identité:

    DBCC CHECKIDENT ('[schema].[YourTableName]', RESEED, value);
2
Bikram

Si vous le voulez juste après un INSERT, vous pouvez utiliser 

SELECT @@IDENTITY

Sinon, vous devez utiliser:

SELECT MAX(Id) FROM Table
1
ErikEJ
DECLARE @v_identity
SELECT @v_identity = ISNULL(MAX([index]), 0) + 1
FROM [dbo].[Table]
SELECT @v_identity
0
test data