Mam tabelę z kolumną TOŻSAMOŚĆ. Podczas programowania od czasu do czasu usuwam wiersze i dodam je ponownie. Ale wartości TOŻSAMOŚCI zawsze rosły i nie zaczynały się od 1, gdy je ponownie dodałem. Teraz mój identyfikator ma wartość 68 -> 92, co powoduje awarię mojego kodu.
Jak zresetować wartość TOŻSAMOŚCI?
Odpowiedzi:
Możesz zresetować wartość tożsamości za pomocą
Więc następnym razem, gdy wstawisz do TableName, wstawiona wartość tożsamości będzie wynosić 1.
Podczas usuwania wierszy z tabeli, nie będzie wyzerować wartość tożsamości, ale to ciągle wzrasta go. Tak jak w twoim przypadku.
Teraz, kiedy obetniesz tabelę, zresetuje ona wartość Tożsamości do oryginalnej wartości początkowej tabeli.
Szczegółowy przykład i kilka dobrych wyjaśnień różnicy między obcięciem a usunięciem : SQL SERVER - DELETE, TRUNCATE and RESEED Identity.
źródło
Kin pokazał ci, jak możesz zresetować wartość TOŻSAMOŚCI, ale poza środowiskiem programistycznym, kiedy naprawdę usuwasz wszystkie dane, dlaczego musisz to zrobić?
Mam nadzieję, że nie zamierzasz utrzymywać ciągłej sekwencji wartości TOŻSAMOŚCI podczas produkcji. I mam nadzieję, że tak naprawdę nie piszesz swojego kodu, aby zakodować na stałe wartości TOŻSAMOŚCI. Jeśli są to znaczące wartości identyfikatora, należy przestać używać właściwości TOŻSAMOŚĆ.
Jest kilka rzeczy, które temu zapobiegną:
który nie zostanie naprawiony, dopóki SQL Server 2014nigdy nie zostanie naprawiony (chyba że użyjesz nieudokumentowanej i bardzo drogiej flagi śledzenia), w wyniku czego ponowne uruchomienie wydaje się odrzucać do 1000 wartości z kolumny TOŻSAMOŚĆ . Błąd w Connect sugeruje, że jest to ograniczone do zdarzeń przełączania awaryjnego z udziałem grup dostępności, ale zapewniam, że błąd jest znacznie szerszy.Krótko mówiąc, jeśli zależy Ci na lukach lub chcesz nadać tym wartościom konkretne znaczenie, przestań używać TOŻSAMOŚCI. Upuść i ponownie utwórz tabelę, a gdy musisz usunąć wartości i ponownie wypełnić, albo wykonaj aktualizację, albo wstaw wstawkę z zakodowanymi wartościami dla tej kolumny.
Nawiasem mówiąc, klucz podstawowy i tożsamość to nie to samo. Kolumna tożsamości nie jest kluczem podstawowym, chyba że wyraźnie ją zdefiniujesz, a na pewno możesz mieć klucz podstawowy, który nie jest kolumną tożsamości.
źródło
Jeśli musisz tylko wyeliminować ostatnie wiersze, które nie były zgodne z przyrostową wartością pola tożsamości, istnieje prosty i bezpieczny sposób:
i gotowe.
źródło