sql >> Database >  >> RDS >> Sqlserver

Hoe een tabelidentiteit in SQL Server 2008 opnieuw te zaaien en alles veilig ongedaan te maken?

De opdracht om de identiteitseigenschap te resetten is

DBCC CHECKIDENT (tablename, RESEED, new_reseed_value)

Als u de kolomidentiteit wilt instellen op 12345, voert u dit uit

DBCC CHECKIDENT (beer, RESEED, 12345)

Als u testrijen wilt verwijderen en de waarde wilt herstellen naar de vorige waarde, doet u het volgende.

DELETE
FROM beer
WHERE beer_id >= 12345 ;

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

DBCC CHECKIDENT (beer, RESEED, @NewSeed)

Hier is een demonstratie voor uw scenario. Merk op dat de kolom beer_id is gemaakt met de IDENTITY (1, 1) eigenschap, die de identiteit naar 1 zaait met een toename van 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. SQL Server gebruikt geen index die datetime vergelijkt met niet null

  2. Laravel 4 Migrations gooit 1072 fout

  3. Hoe te repareren van de "datediff-functie resulteerde in een overloop" Fout in SQL Server

  4. Indexscan voor vergelijking van meerdere kolommen - niet-uniforme volgorde van indexkolommen