我有一些表,我有一个标识列,我试图重新种植.重播工作(我认为)但是当一个新的数据项插入到表中时,标识列从0开始.
我重新编写的代码是:
DBCC CHECKIDENT(MyTable,RESEED,0)
表的标识规范是:
快速注意我在重新播种前对表格执行删除操作
请帮忙
小智 6
当种子初始化为0时,似乎"未初始化"或截断表(意味着没有数据插入到表中)将从0开始.但是当数据已插入表中并且删除用于清除所有数据时表的行.重新设定为0只会将数据库的最后一个种子保留为0,下一个种子为1.
这里说的是一个复制问题的例子:
-- Script to create a test table
IF EXISTS(SELECT 1 FROM Information_Schema.Tables WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'SeedTest') BEGIN
DROP TABLE SeedTest
END
-- Create a Test Seed Table
CREATE TABLE [dbo].[SeedTest](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Value] [varchar](255) NOT NULL,
CONSTRAINT [PK_SeedTest] PRIMARY KEY CLUSTERED
(
[Id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
-- When a table is truncated or "Not Initialized" (meaning no data EVER inserted)
-- An initial reseed of 0 will make the first identity insert value = 0.
DBCC CHECKIDENT (SeedTest, RESEED, 0)
GO
INSERT INTO SeedTest([Value]) VALUES('Test')
SELECT * FROM SeedTest
GO
-- If you truncate the table and reseed the same effect will occur (first identity insert value = 0).
TRUNCATE TABLE SeedTest
GO
DBCC CHECKIDENT (SeedTest, RESEED, 0)
GO
INSERT INTO SeedTest([Value]) VALUES('Test')
SELECT * FROM SeedTest
-- When Deleting records from a table (Foreign key constraints may prevent a truncate)
-- Reseeding to 0 will set the last seed to 0 and make the next seed = 1
DELETE FROM SeedTest
GO
DBCC CHECKIDENT (SeedTest, RESEED, 0)
GO
INSERT INTO SeedTest([Value]) VALUES('Test')
SELECT * FROM SeedTest
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10300 次 |
| 最近记录: |