[英]How to reset auto-increment in SQL Server?
我的数据库一直存在这个问题,即使它已被删除,它仍继续增加id列。 为了更好地理解我的意思,这是我的gridview的屏幕截图:
从id列中可以看到,从11-16一切都很好,但是从25-27突然跳了起来。我想发生的是,当我删除一个项目时,我希望它从最后一个id开始16.所以下一个id应该是17.我希望这对你们有意义。
这也是SQL脚本的一部分:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[guitarItems]
(
[id] [int] IDENTITY(1,1) NOT NULL,
[type] [varchar](50) NOT NULL,
[brand] [varchar](50) NOT NULL,
[model] [varchar](50) NOT NULL,
[price] [float] NOT NULL,
[itemimage1] [varchar](255) NULL,
[itemimage2] [varchar](255) NULL,
[description] [text] NOT NULL,
[necktype] [varchar](100) NOT NULL,
[body] [varchar](100) NOT NULL,
[fretboard] [varchar](100) NOT NULL,
[fret] [varchar](50) NOT NULL,
[bridge] [varchar](100) NOT NULL,
[neckpickup] [varchar](100) NOT NULL,
[bridgepickup] [varchar](100) NOT NULL,
[hardwarecolor] [varchar](50) NOT NULL,
PRIMARY KEY CLUSTERED ([id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
您可以使用:
DBCC CHECKIDENT ("YourTableNameHere", RESEED, 1);
在使用它之前,请访问链接: https : //docs.microsoft.com/zh-cn/sql/t-sql/database-console-commands/dbcc-checkident-transact-sql
数据库中的主自动增量键用于唯一地标识给定的行,并且不应赋予任何业务含义。 因此,保留主键不变,然后添加另一列,例如guitarItemsId 。 然后,当您从数据库中删除一条记录时,您可能希望发送一条附加的UPDATE语句,以减少所有GuitarItemsId大于当前删除的行的guitarItemsId列。
另外,请记住,永远不要在关系数据库中修改主键的值,因为可能会有其他表将其引用为外键,并且对其进行修改可能会违反引用约束。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.