SQL ServerのIDENT_CURRENT( 'table')のような特定のテーブルの現在のID値を取得したい
SELECT AUTOINC_SEED
FROM INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tablename'
and COLUMN_NAME='columnName'
特定のテーブルの最後のID挿入値を取得する場合は、次のステートメントを使用します。
select IDENT_CURRENT('tablename')
例えば:
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'
身元を確認するには:
DBCC CHECKIDENT ('[schema].[YourTableName]', NORESEED);
IDを再シードするには:
DBCC CHECKIDENT ('[schema].[YourTableName]', RESEED, value);
SELECT AUTOINC_SEED
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='TableName'
AND COLUMN_NAME='ColumnName'
from Hamid's answer 探しているものがID列のシード値である場合(つまり、ID列の最初の値が何であったか、またはこれからになるか)であれば問題ありませんが、挿入された行の次の値がどうなるかを探して、これはあなたが使いたいクエリです:
SELECT AUTOINC_NEXT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='TableName'
AND COLUMN_NAME='ColumnName'
INSERTの直後に必要な場合は、
SELECT @@IDENTITY
それ以外の場合は、以下を使用する必要があります。
SELECT MAX(Id) FROM Table
SELECT IDENT_CURRENT('tableName or ViewName')
例:
SELECT IDENT_CURRENT('Student')
DECLARE @v_identity
SELECT @v_identity = ISNULL(MAX([index]), 0) + 1
FROM [dbo].[Table]
SELECT @v_identity