您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL身份(1,1)从0开始

SQL身份(1,1)从0开始

我希望有人/某事已经发生:

DBCC CHECKIDENT ('dbo.MyTable', RESEED, 0);

如果运行以下命令:

CREATE TABLE dbo.MyTable(
    MyTableID int IDENTITY(1,1) NOT NULL,
    RecordName nvarchar(100) NULL
);

DBCC CHECKIDENT ('dbo.MyTable', RESEED, 0);
DBCC CHECKIDENT ('dbo.MyTable', NORESEED);

第二个CHECKIDENT仍然返回NULL

检查身份信息:当前身份值’NULL’,当前列值’NULL’。

但是,下一个标识值将为0。这是记录的行为,MSDN指出:

当前身份值设置为new_reseed_value。 。否则,插入的下一行将使用new_reseed_value +1。如果new_reseed_value的值小于标识列中的最大值,则对该表的后续引用将生成错误消息2627。

这仅适用于其中的last_valuesys.identity_columns仍为NULL的新创建/截断的表。如上所述,如果要插入一行,将其删除,然后重新设置为0,则新标识仍为1。

IF OBJECT_ID(N'dbo.T', 'U') IS NOT NULL
    DROP TABLE dbo.T;

CREATE TABLE dbo.T(ID INT IDENTITY(1,1) NOT NULL);
INSERT dbo.T OUTPUT inserted.* DEFAULT VALUES;
-- OUTPUTS 1

DELETE dbo.T;
DBCC CHECKIDENT ('dbo.T', RESEED, 0);
INSERT dbo.T OUTPUT inserted.* DEFAULT VALUES;
-- OUTPUTS 1

TRUNCATE TABLE dbo.T;
DBCC CHECKIDENT ('dbo.T', RESEED, 0);
INSERT dbo.T OUTPUT inserted.* DEFAULT VALUES;
-- OUTPUTS 0
SQLServer 2022/1/1 18:44:30 有433人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶