Identity Specification

0

Witam wszystkich forumowiczów
Właśnie zaczynam przygodę z Salem i jest to mój pierwszy post na tym forum.
Mam problem z kolumną o nazwie Id dla której w właściwościach kolumny ustawiłem Identity Increment na 1 i Identity Seed na 1. Jak wprowadziłem pierwszy rekord do tabeli w kolumnie Id pokazała się wartość 2 pomimo tego Identity Seed ustawiłem na 1. Dlaczego tak się dzieje ? Po usunięciu rekordu i wprowadzeniu nowego w kolumnie Id pokazała się wartość 3. Dlaczego nie 1 skoro nie mam żadnych rekordów w tabeli. Gdy chciałem za pomocą polecenie update....set Id =1 otrzymałem komunikat Cannot update identity column Id. Czyli co nie można updatować tej kolumny?
Dodam że pracuje w MS SQL Serwer 2016

0

Usuniecie rekordu, nie sprawia, że identity zacznie sie numerować od pierwszej wolnej wartości.

Kilka możliwości:

  1. Jeżeli usuwasz cała tabelę uzyj truncate to "wyzeruje" wartośc identitiy
  2. Uzyj DBCC CHECKIDENT
  3. Do dodanie pól identity użyj: SET IDENTITY_INSERT
1

Identity z założenia ma być unikalne a unikalność ta jest realizowana w ten sposób, że każde pobranie wartości (np. wstawienie rekordu) zwiększa licznik o 1 bez sprawdzania czy są "dziury" w numeracji. Dla własnego bezpieczeństwa nie próbuj używać autonumeracji jako liczby porządkowej lub licznika przy numeracji dokumentów, które nie mogą mieć dziur. Podstawowym i jedynym zadaniem pól autonumeracji jest zapewnienie unikalnych wartości!

1 użytkowników online, w tym zalogowanych: 0, gości: 1