sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo volver a sembrar una identidad de tabla en SQL Server 2008 y deshacerlo todo de forma segura?

El comando para restablecer la propiedad de identidad es

DBCC CHECKIDENT (tablename, RESEED, new_reseed_value)

Cuando desee establecer la identidad de la columna en 12345, ejecute esto

DBCC CHECKIDENT (beer, RESEED, 12345)

Cuando desee eliminar filas de prueba y restaurar el valor al valor anterior, haga lo siguiente.

DELETE
FROM beer
WHERE beer_id >= 12345 ;

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

DBCC CHECKIDENT (beer, RESEED, @NewSeed)

Aquí hay una demostración para su escenario. Tenga en cuenta que la columna beer_id se crea con IDENTITY (1, 1) propiedad, que genera la identidad en 1 con un incremento de 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 ;