Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zduplikowane wartości w kolumnie tożsamości

Sprawdziłem to, co mówi Giogri i jeśli włączysz Specyfikację tożsamości (przynajmniej w 2008, prawdopodobnie także inne wersje) po tym, jak tabela ma wiersze, DB rozpocznie numerowanie od najwyższej wartości całkowitej. Jeśli masz jeden wiersz z wartością kolumny 100, a następnie włącz Identity, następna wstawka będzie miała wartość 101. Nawet z ziarnem tożsamości określonym jako 1. Nie było to, czego się spodziewałem, ale tak się stało.

Oprócz SET IDENTITY INSERT , jest też polecenie reseed. DBCC CHECKIDENT polecenie, które zresetuje twoje wartości tożsamości z powrotem do tych, które określiłeś.

Biorąc pod uwagę, że włączenie specyfikacji tożsamości faktycznie zaczyna się od najwyższej liczby całkowitej w kolumnie, prawdopodobnie ktoś użył opcji SET IDENTITY_INSERT lub zrobiłeś DBCC CHECKIDENT .

Najszybszym sposobem na zmianę kolejności, jak mówi Andomar, jest upuszczenie/odtworzenie kolumny w ten sposób

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Debugowanie długiego dynamicznego sql w SQL Server 2008

  2. TSQL - Czy można zdefiniować porządek sortowania?

  3. Walidacja e-mail TSQL (bez wyrażenia regularnego)

  4. Jak mogę się zalogować i znaleźć najdroższe zapytania?

  5. Jak zapobiec cykliczności wyzwalacza bazy danych?