sql >> Databasteknik >  >> RDS >> Sqlserver

Hur seed man om en tabellidentitet i SQL Server 2008 och ångrar allt på ett säkert sätt?

Kommandot för att återställa identitetsegenskapen är

DBCC CHECKIDENT (tablename, RESEED, new_reseed_value)

När du vill ställa in kolumnidentiteten till 12345 kör du detta

DBCC CHECKIDENT (beer, RESEED, 12345)

När du vill ta bort testrader och återställa värdet till föregående värde gör du följande.

DELETE
FROM beer
WHERE beer_id >= 12345 ;

DECLARE @NewSeed NUMERIC(10)
SELECT @NewSeed = MAX(beer_id)
FROM beer ;

DBCC CHECKIDENT (beer, RESEED, @NewSeed)

Här är en demonstration för ditt scenario. Observera att kolumnen beer_id skapas med IDENTITY (1, 1) egenskap, som såddar identiteten till 1 med en ökning på 1.

CREATE TABLE beer
    (        
    beer_id NUMERIC(10) IDENTITY (1,1) NOT NULL,
    mnemonic NVARCHAR(8)
    );

GO

INSERT INTO beer(mnemonic) VALUES ('Beer 1')
INSERT INTO beer(mnemonic) VALUES ('Beer 2')

SELECT *
FROM beer ;

DBCC CHECKIDENT (beer, RESEED, 12345)
GO

INSERT INTO beer(mnemonic) VALUES ('Beer 3')
INSERT INTO beer(mnemonic) VALUES ('Beer 4')

SELECT *
FROM beer ;

DELETE
FROM beer
WHERE beer_id >= 12345 ;

DECLARE @NewSeed NUMERIC(10)
SELECT @NewSeed = MAX(beer_id)
FROM beer ;

DBCC CHECKIDENT (beer, RESEED, @NewSeed)
GO

INSERT INTO beer(mnemonic) VALUES ('Beer 5')
INSERT INTO beer(mnemonic) VALUES ('Beer 6')

SELECT *
FROM beer ;


  1. installera cx_oracle för python

  2. Vad virtuella filstater gör och inte gör, berättar om I/O-latens

  3. IntegrityError:skiljer mellan unika restriktioner och inte null-överträdelser

  4. Refererar till främmande nycklar i samma kolumn