Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да заредите отново идентичност на таблица в SQL Server 2008 и да отмените всичко безопасно?

Командата за нулиране на свойството за самоличност е

DBCC CHECKIDENT (tablename, RESEED, new_reseed_value)

Когато искате да зададете идентичността на колоната на 12345, стартирайте това

DBCC CHECKIDENT (beer, RESEED, 12345)

Когато искате да изтриете тестови редове и да възстановите стойността до предишната стойност, правите следното.

DELETE
FROM beer
WHERE beer_id >= 12345 ;

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

DBCC CHECKIDENT (beer, RESEED, @NewSeed)

Ето демонстрация за вашия сценарий. Имайте предвид, че колоната beer_id е създадена с IDENTITY (1, 1) свойство, което поставя идентичността на 1 с увеличение от 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете ред, където колона дата и час =днес - SQL сървър noob

  2. Групиране на ред по сума на конкретна колона, равна на конкретна стойност

  3. Как да зададете неименувани SQL параметри в SqlCommand

  4. Какъв е еквивалентът на Oracle на функцията IsNull() на SQL Server?

  5. Последователност на изпълнение на клаузата Group By, Having и Where в SQL Server?