为什么身份种子在 SQL 服务器中显示错误值?
Why is Identity Seed showing the wrong value in SQL Server?
我已经使用以下命令将种子值设置为 1 到 100,但是 SQL 服务器仍然显示 1 作为身份种子值,它应该是。
DBCC CHECKIDENT (TableName, RESEED, 100);
当我运行这个SELECT IDENT_SEED('TableName')
的时候,还是显示1,设计上也是显示1。
当我将记录插入表格时,它被正确插入,我的意思是仅在 100 之后。
SSMS 版本:18.4
IDENT_SEED
不是 return table 的当前种子,你所拥有的正在运行。来自 IDENT_SEED (Transact-SQL):
Returns the original seed value specified when creating an identity column in a table or a view. Changing the current value of an identity column by using DBCC CHECKIDENT doesn't change the value returned by this function.
强调我的。
如果要查看当前种子,请按照DBCC CHECKIDENT
中的说明进行操作:DBCC CHECKIDENT (N'dbo.YourTable', NORESEED);
。
示例:
USE Sandbox;
GO
CREATE TABLE dbo.IdentID (ID int IDENTITY(1,1));
GO
INSERT INTO dbo.IdentID
DEFAULT VALUES;
GO
--Returns 1
SELECT *
FROM dbo.IdentID;
GO
--Returns 1
SELECT IDENT_SEED(N'dbo.IdentID') AS IDENTSEED;
GO
--Returns 1 for identity value, as it gives the last used value
DBCC CHECKIDENT (N'dbo.IdentID', NORESEED);
GO
DBCC CHECKIDENT (N'dbo.IdentID', RESEED, 100);
GO
--Returns 1
SELECT IDENT_SEED(N'dbo.IdentID') AS IDENTSEED;
GO
--Returns 100 for identity value
DBCC CHECKIDENT (N'dbo.IdentID', NORESEED);
GO
INSERT INTO dbo.IdentID
DEFAULT VALUES;
GO
--Returns rows with IDs of 1 and 101
SELECT *
FROM dbo.IdentID;
GO
GO
DROP TABLE dbo.IdentID;
我已经使用以下命令将种子值设置为 1 到 100,但是 SQL 服务器仍然显示 1 作为身份种子值,它应该是。
DBCC CHECKIDENT (TableName, RESEED, 100);
当我运行这个SELECT IDENT_SEED('TableName')
的时候,还是显示1,设计上也是显示1。
当我将记录插入表格时,它被正确插入,我的意思是仅在 100 之后。
SSMS 版本:18.4
IDENT_SEED
不是 return table 的当前种子,你所拥有的正在运行。来自 IDENT_SEED (Transact-SQL):
Returns the original seed value specified when creating an identity column in a table or a view. Changing the current value of an identity column by using DBCC CHECKIDENT doesn't change the value returned by this function.
强调我的。
如果要查看当前种子,请按照DBCC CHECKIDENT
中的说明进行操作:DBCC CHECKIDENT (N'dbo.YourTable', NORESEED);
。
示例:
USE Sandbox;
GO
CREATE TABLE dbo.IdentID (ID int IDENTITY(1,1));
GO
INSERT INTO dbo.IdentID
DEFAULT VALUES;
GO
--Returns 1
SELECT *
FROM dbo.IdentID;
GO
--Returns 1
SELECT IDENT_SEED(N'dbo.IdentID') AS IDENTSEED;
GO
--Returns 1 for identity value, as it gives the last used value
DBCC CHECKIDENT (N'dbo.IdentID', NORESEED);
GO
DBCC CHECKIDENT (N'dbo.IdentID', RESEED, 100);
GO
--Returns 1
SELECT IDENT_SEED(N'dbo.IdentID') AS IDENTSEED;
GO
--Returns 100 for identity value
DBCC CHECKIDENT (N'dbo.IdentID', NORESEED);
GO
INSERT INTO dbo.IdentID
DEFAULT VALUES;
GO
--Returns rows with IDs of 1 and 101
SELECT *
FROM dbo.IdentID;
GO
GO
DROP TABLE dbo.IdentID;