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

Duplicitní hodnoty ve sloupci identity

Testoval jsem, co říká Giogri, a pokud povolíte specifikaci identity (alespoň v roce 2008, pravděpodobně i jiné verze) poté, co tabulka obsahuje řádky, DB začne číslování na nejvyšší celočíselné hodnotě. Pokud máte jeden řádek se 100 jako hodnotou sloupce, pak povolte Identitu, další vložení bude 101. I s Identity Seed zadaným jako 1. Nebylo to, co bych očekával, ale stalo se to.

Kromě SET IDENTITY INSERT , je zde také příkaz reseed. DBCC CHECKIDENT příkaz, který obnoví hodnoty vaší identity zpět na to, co určíte.

Vzhledem k tomu, že povolení specifikace identity ve skutečnosti začíná nejvyšším celým číslem ve sloupci, někdo pravděpodobně buď použil SET IDENTITY_INSERT nebo provedli DBCC CHECKIDENT .

Nejrychlejší způsob, jak změnit pořadí, jak říká Andomar, je vypustit/znovu vytvořit sloupec takto

ALTER TABLE tbl
DROP COLUMN ident_column
GO
alter TABLE tbl
ADD ident_column int IDENTITY

SET IDENTITY_INSERT dokumenty:http://msdn.microsoft.com/ en-us/library/aa259221(SQL.80).aspx
DBCC CHECKIDENT dokumenty:http://msdn.microsoft.com/ en-us/library/aa258817(SQL.80).aspx



  1. Jak vypustit nebo odstranit všechny spouštěče z databáze na serveru SQL

  2. Kalendářní tabulky v PostgreSQL 9

  3. sql DROP CONSTRAINT UNIQUE nefunguje

  4. mysql se duplikuje s LOAD DATA INFILE