2012-05-25 8 views
12

Mam tabelę z identyfikatorem, ten identyfikator to automatyczny przyrost i klucz podstawowy, przy pierwszym wprowadzeniu do tej tabeli identyfikator zaczyna się od 0, ale po usunięciu wszystkich wartości z tej tabeli i wstawione ponownie, identyfikator nie zaczyna się od 0, ale zaczyna się od ostatniej wartości posiadanej przez ID, co się nie zgadza? Czy mogę zresetować wartość do 0?Automatyczna inkrementacja identyfikatora mysql nie rozpoczyna się od 0

+3

Nic nie jest źle. To jest oczekiwane zachowanie. Czy licznik kilometrów twojego samochodu zaczyna się od 0 za każdym razem, gdy jedziesz? –

+0

i co mogę zrobić, wstawiłem ponad 300 razy do moich stołów, kiedy zobaczyłem pracę domową nauczycielowi, nie jest dobrze pokazać mu, że klienci zaczynają od 301, prawda? – LinCR

+1

Jeśli wstawiłeś wstawki ze skryptu, możesz upuścić tabelę, a następnie ponownie uruchomić skrypt. Jeśli wstawki były ręczne, nie chcesz ponownie wstawiać, prawda ?. W każdym razie masz 300 klientów tymczasowych/testowych, które usunąłeś. Gdybym był twoim nauczycielem, nie stanowiłoby to problemu. –

Odpowiedz

16

Można też obciąć tabelę korzystając

TRUNCATE `table` 

Obetnij będzie usunąć wszystkie dane w tabeli. Zauważ, że użycie TRUNCATE nie uruchomi żadnych wyzwalaczy DELETE, takich jak DELETE.

Albo można wyzerować licznik za pomocą

ALTER TABLE `table` AUTO_INCREMENT = 1 

Jest jednak oczekiwane zachowanie. Nie rób tego ostatniego, chyba że stół jest naprawdę pusty.

+0

dziękuje ci – LinCR

1

Musisz użyć instrukcji TRUNCATE, aby ponownie uruchomić auto_contrement od 1. To normalne zachowanie, aby uniknąć hamowania.

+0

dasz mi przykład, proszę, i dziękuję – LinCR

+0

PAY UWAGA, że stół TRUNCATE zniszczy twój stół ... – dAm2K

+0

TRUNCATE TABLE your_table_name – dAm2K

3

Usunięcie wszystkich elementów w tabeli nie wpływa na klucz podstawowy. Klucz podstawowy nadal będzie automatycznie zwiększał swoją ostatnią wartość.

Jeśli chcesz zresetować klucz podstawowy, można spróbować obciąć tabelę:

TRUNCATE TABLE yourtable; 

ta usuwa wszystkie elementy z yourtable. To, czy resetuje klucz podstawowy, zależy od bazy danych. Z Mysql powinien działać, ponieważ Mysql usuwa i odtwarza tabelę na TRUNCATE.

+0

mam cię, dziękuję – LinCR

5

Aby wstawić klucz podstawowy o wartości 0, wykonać najpierw następującą prośbę:

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 
Powiązane problemy