从当前值重新设定SQL自动增量

从当前值重新设定SQL自动增量,sql,sql-server,Sql,Sql Server,我正在尝试从SQL中表的当前自动增量值重新设置自动增量值的种子。 我做了一些类似的事情 USE [MyDatabase] GO SELECT IDENT_CURRENT('MyTable') AS Current_Identity DBCC CHECKIDENT (MyTable, reseed, Current_Identity) 我得到以下错误: (1 row(s) affected) Msg 2560, Level 16, State 9, Line 3 Parameter 3 is

我正在尝试从SQL中表的当前自动增量值重新设置自动增量值的种子。 我做了一些类似的事情

USE [MyDatabase]
GO

SELECT IDENT_CURRENT('MyTable') AS Current_Identity
DBCC CHECKIDENT (MyTable, reseed, Current_Identity)
我得到以下错误:

(1 row(s) affected)
Msg 2560, Level 16, State 9, Line 3
Parameter 3 is incorrect for this DBCC statement.

知道出了什么问题吗?

在SQL Server中,您可以将当前的
标识值保存在变量中,如下所示:

DECLARE @currentIdentity INT;
SELECT @currentIdentity = IDENT_CURRENT('MyTable');
DBCC CHECKIDENT (MyTable, reseed, @currentIdentity);

要回答您的问题,您的问题是当前_标识是列的别名,但您没有将其存储在任何位置。这意味着您对
DBCC CHECKIDENT
的下一次调用无法引用上一个查询中的列。

如果您在一个从未有记录的表上运行以下代码,则将出现以下错误:

此DBCC语句的参数3不正确

原因是在这种情况下,
@max_id
为空,您无法传递它

这就是我要做的。我会检查返回的值,确保它不为NULL。希望这有帮助

DECLARE @max_id INT, @var int
SELECT @max_id = MAX(ID)+1 FROM TABLENAME; 
IF @max_id IS NULL 
BEGIN
SELECT@var = 1 
END
ELSE
BEGIN 
SELECT @var = @max_id
END
DBCC CHECKIDENT('TABLENAME,RESEED,@var);

你确定这是MySQL吗?看起来很像MSSQL。
DECLARE @max_id INT, @var int
SELECT @max_id = MAX(ID)+1 FROM TABLENAME; 
IF @max_id IS NULL 
BEGIN
SELECT@var = 1 
END
ELSE
BEGIN 
SELECT @var = @max_id
END
DBCC CHECKIDENT('TABLENAME,RESEED,@var);