我希望有人/某事已经发生:
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’。
当前身份值设置为new_reseed_value。 。否则,插入的下一行将使用new_reseed_value +1。如果new_reseed_value的值小于标识列中的最大值,则对该表的后续引用将生成错误消息2627。
这仅适用于其中的last_value
列sys.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