sql >> Databáze >  >> RDS >> Sqlserver

Jak znovu nasadit identitu tabulky v SQL Server 2008 a bezpečně to vrátit zpět?

Příkaz k resetování vlastnosti identity je

DBCC CHECKIDENT (tablename, RESEED, new_reseed_value)

Když chcete nastavit identitu sloupce na 12345, spusťte tento

DBCC CHECKIDENT (beer, RESEED, 12345)

Pokud chcete odstranit testovací řádky a obnovit hodnotu na předchozí hodnotu, proveďte následující.

DELETE
FROM beer
WHERE beer_id >= 12345 ;

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

DBCC CHECKIDENT (beer, RESEED, @NewSeed)

Zde je ukázka vašeho scénáře. Všimněte si, že sloupec beer_id je vytvořen pomocí IDENTITY (1, 1) vlastnost, která zasadí identitu na 1 s přírůstkem 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. Jak zapsat příkaz IF ELSE v dotazu MySQL

  2. Řetězec objednávky SQL jako číslo

  3. Mám zahrnout SELECTy do transakce?

  4. Určení data Velikonoc pro jakýkoli rok v Oracle PLSQL