Jak mogę zresetować kolumnę tożsamości na serwerze SQL?

Jak mogę zresetować kolumnę tożsamości na serwerze SQL?
W SQL Server kolumna tożsamości odnosi się do kolumny, która automatycznie generuje wartości na podstawie dostarczonej wartości nasiennej i interwału przyrostu.

Ten przewodnik nauczy Cię, jak zresetować kolumnę tożsamości na SQL Server, umożliwiając zresetowanie błędnych skonfigurowanych wartości w kolumnie tożsamości.

Tożsamość SQL Server

Aby dodać kolumnę tożsamości do tabeli w SQL Server, użyj zapytania tożsamości. Składnia zapytania tożsamości na SQL Server jest jak pokazano:

Tożsamość (seded_value, increment_interval);

Zapytanie tożsamości przyjmuje dwa argumenty:

  1. wartość seded_sonom odnosi się do wartości pierwszego rekordu w tabeli.
  2. increment_interval - odnosi się do określonej wartości dodanej do poprzedniego rekordu w tabeli.

Domyślnie wartości nasion i przyrostu są ustawione na 1. Stąd pierwszy rekord w tabeli ma wartość 1, a każdy rekord dodany do tabeli, dodany przez 1.

Zresetuj kolumnę tożsamości na serwerze SQL

Nauczmy się teraz, jak zresetować kolumnę tożsamości na serwerze SQL i dlaczego być może będziesz musiał to zrobić.

Zacznij od utworzenia przykładowej tabeli i wstawienie danych, jak pokazano w poniższych zapytaniach:

Utwórz zapasy tabeli (
Id int int tożsamość kluczowa (1,1) nie zerowa,
Product_name Varchar (255),
cena int,
ilość int
);
Wstaw do zapasów (nazwa_produktu, cena, ilość) Wartości
(„Smart Watch”, 110.99, 5),
(„MacBook Pro”, 2500.00, 10),
(„Zimowe płaszcze”, 657.95, 2),
(„Biuro Office”, 800.20, 7),
(„Lutownicze”, 56.10, 3),
(„Tripod Telefon”, 8.95, 8);

Możemy teraz zapytać o dane przechowywane w tabeli jako:

Wybierz * z zapasów;

Powstałe rekordy są jak pokazano:

Zwróć uwagę na kolumnę identyfikacyjną; Chociaż nie określiliśmy wartości w naszym instrukcji Insert, funkcja tożsamości automatyczna generuje wartość od 1 i wciąż rośnie o 1 dla każdego wkładanego rekordu.

Po co resetować kolumnę tożsamości?

Możesz zapytać, czy kolumna tożsamości zawiera automatyczne wygenerowane wartości w określonej kolejności logicznej, dlaczego muszę zresetować kolumnę tożsamości?

Spójrz, co stanie się z danymi, gdy usuniemy rekord z tabeli:

Usuń z zapasów, gdzie ilość = 7;

Powyższe przykładowe zapytanie powinno usunąć jeden rekord, gdzie ilość jest równa 7.

Tabela zawiera teraz rekordy jako:

Wybierz * z zapasów;

W kolumnach ID mamy wartości od 1 do 6. Jednak brakuje identyfikatora 4. Dzieje się tak, gdy upuszczamy rekord ze stołu.

Aby to naprawić, musimy zresetować kolumnę tożsamości.

Jak zresetować kolumnę tożsamości

Aby zresetować kolumnę tożsamości na SQL Server, używamy procedury kontroli DBCC.

Składnia procedury jest:

DBCC CheckIdent („TABLE_NAME”, RESEEED, NEW_VALUE);

Jeśli jednak zresetujemy kolumnę tożsamości i spróbujemy wstawić dane, SQL Server zwraca błąd. Aby to rozwiązać:

  • Utwórz nowy stół działający jako kopia zapasowa starego stołu.
  • Usuń dane ze starej tabeli
  • Zresetuj kolumnę tożsamości
  • Ponownie zawiera dane do nowej tabeli.

Przykładowe zapytanie wdrażające powyższe kroki jest takie jak pokazano:

Wybierz * do new_inventory z Inwentaryzacji;
Usunąć z zapasów;
DBCC Checkident („Inwentaryzacja”, Reseed, 0);
Wstaw do zapasów (nazwa_produktu, cena, ilość) Wybierz nazwę_produktu, cenę, ilość z NEW_INVENTory Order według ID ASC;

Po pomyślnym wykonywaniu zapytań możemy sprawdzić dane w tabeli zapasów jako:

Wybierz * z zapasów;

Powstałe rekordy tabeli są takie jak pokazano:

Tutaj kolumna identyfikatora jest we właściwej kolejności.

Zamknięcie

Ten przewodnik obejmuje podstawy funkcji tożsamości w SQL Server i sposób zresetowania kolumny tożsamości w przypadku błędów.