我正在尝试从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.
任何想法都会出错?
答案 0 :(得分:3)
在SQL Server中,您可以将IDENT_CURRENT
值保存在变量中,如下所示:
DECLARE @currentIdentity INT;
SELECT @currentIdentity = IDENT_CURRENT('MyTable');
DBCC CHECKIDENT (MyTable, reseed, @currentIdentity);
要回答您的问题,您的问题是Current_Identity是列的别名,但您没有将其存储在任何位置。这意味着您对DBCC CHECKIDENT
的下一个调用无法引用上一个查询中的列。
答案 1 :(得分:0)
如果在从未有过记录的表上运行以下代码,则会出现以下错误:
此DBCC语句的参数3不正确
DECLARE @max_id INT
SELECT @max_id = MAX(ID)+1 FROM testt;
DBCC CHECKIDENT('Tablename',RESEED,@max_id);
原因是@max_id
在这种情况下为NULL,您无法传递它。
这是我要做的。我会检查返回的值,以确保它不是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);