簡體   English   中英

從當前值重新設置SQL自動增量

[英]Reseeding SQL auto increment from current value

我試圖從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中,您可以將IDENT_CURRENT值保存在變量中,如下所示:

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

要回答您的問題,您的問題是Current_Identity是列的別名,但您沒有將其存儲在任何位置。 這意味着您對DBCC CHECKIDENT的下一個調用無法引用上一個查詢中的列。

如果在從未有過記錄的表上運行以下代碼,則會出現以下錯誤:

此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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM