2017-05-09 92 views
0

我一直有這個問題與我的數據庫,它不斷增加id列,即使它已被刪除。爲了更好地理解了我的意思,這裏是我的GridView的截圖:如何重置SQL Server中的自動增量?

enter image description here

你可以從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 
+4

標識列,將有差距。 –

+0

@ZoharPeled - 有沒有辦法改變它? – BrunoEarth

+1

的可能的複製[標識增量在SQL Server數據庫跳躍(http://stackoverflow.com/questions/14146148/identity-increment-is-jumping-in-sql-server-database) – GurV

回答

1

數據庫中的主自動遞增鍵用於唯一標識給定行,不應給予任何業務含義。因此,將主鍵保持原樣並添加另一列,如guitarItemsId。然後,當你從數據庫中刪除記錄,你可能要以降低具有比目前要刪除的一個更大的guitarItemsId所有行的guitarItemsId列發送額外的UPDATE語句。

此外,請記住,你不應該修改主鍵的值在關係數據庫中,因爲可能有引用它作爲一個外鍵並修改它可能違反引用約束其他表。

+1

我明白你的觀點。這說得通。 – BrunoEarth

+0

@BrunoEarth如果答案有助於解決您的問題,您可能需要將其標記爲接受的答案。謝謝! – samithagun