Zacznijmy od zrozumienia właściwości Identity, a następnie przejdźmy do kroku, jak możemy ją zresetować? Utwórz tabelę SQL Server z kolumną tożsamości, używając poniższego skryptu
USE TEST GO
CREATE TABLE dbo.Person( ID INT IDENTITY(1,1), Name VARCHAR(10))
Wstawmy poniższe rekordy, używając poniższych instrukcji
INSERT INTO dbo.Person(name)
VALUES ('Aamir')
INSERT INTO dbo.Person(Name)
VALUES ('Aamir Shahzad')
Tylko jeden rekord zostanie wstawiony, a drugi rekord nie powiedzie się, ponieważ rozmiar ciągu jest większy niż rozmiar typu danych kolumny Rys 1 - Wstaw rekordy w tabeli SQL Server
Sprawdź tożsamość Wartość kolumny: Aby sprawdzić wartość tożsamości kolumny, możemy użyć poniższej instrukcji
--Check the Identity Value of a Column
DBCC CHECKIDENT ('dbo.Person');
Fig 2- DBCC CHECKIDENT to see the Identity Value
Nawet wstawienie drugiego rekordu nie powiodło się, ale wartość tożsamości została zwiększona. Jeśli wstawimy kolejny rekord, wartość tożsamości będzie wynosić 3, jak widać na rys. 3.
Oto kilka sposobów na zresetowanie wartości tożsamości kolumny po usunięciu dane.
Zresetuj wartość tożsamości za pomocą funkcji TRUNCATE: Jeśli chcemy usunąć wszystko z tabeli, a tabela nie ma żadnej relacji klucza obcego, możemy Obciąć tabelę, co wyczyści dane, a także ustawi wartość tożsamości Ryc. 3 – Użyj funkcji Obcinanie, aby wyczyścić tabelę i zresetować wartość tożsamości
Zresetuj wartość tożsamości za pomocą polecenia DBCC CHECKIDENT: Jeśli tabela jest w relacji z jakąkolwiek inną relacją (Primary-Foreign Key), nie będziemy mogli obciąć tabeli. W takim przypadku musimy usunąć wartości z tabeli za pomocą instrukcji Delete, a następnie ustawić wartość tożsamości.
DBCC CHECKIDENT ('dbo.Person', RESEED, 0);
Rys 4. Usuń dane z tabeli i użyj polecenia DBCC CHECKIDENT, aby ponownie umieścić wartość tożsamości
Wideo demonstracyjne:Jak zresetować wartość kolumny tożsamości w tabeli SQL Server