Jak mogę zresetowaćAUTO_INCREMENT
pola?
Chcę, żeby 1
znów zaczęło odliczać .
mysql
sql
auto-increment
Homerun
źródło
źródło
TRUNCATE TABLE yourTableName;
Odpowiedzi:
Możesz zresetować licznik za pomocą:
W przypadku InnoDB nie można ustawić
auto_increment
wartości niższej lub równej najwyższemu bieżącemu indeksowi. (cytat z ViralPatel ):Zobacz Jak zresetować autowzrost MySQL przy użyciu wartości MAX z innej tabeli? na temat tego, jak dynamicznie uzyskać akceptowalną wartość.
źródło
circular reference
curcular reference
?źródło
Myślę, że to zrobi
źródło
UPDATE
zaktualizujesz wszystkie wartości wid
kolumnie.Po prostu tak:
odniesienie: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
źródło
reset
oznacza ustawienie jej na wartość domyślną ... dzięki czemu można zastąpić „wartość” 1Jest bardzo łatwy sposób z phpmyadmin w zakładce „operacje”, możesz ustawić, w opcjach tabeli, auto-wzrost do żądanej liczby.
źródło
Najlepsze rozwiązanie, które dla mnie zadziałało:
Jest szybki, współpracuje z innoDB i nie muszę znać bieżącej wartości maksymalnej! W ten sposób licznik automatycznego przyrostu zostanie zresetowany i uruchomi się automatycznie od wartości maksymalnej.
źródło
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'my_table' AND table_schema = DATABASE( ) ;
5.6.15
, podczasALTER TABLE tablename AUTO_INCREMENT = 1
gdy nie .Najwyżej ocenione odpowiedzi na to pytanie zalecają „ZMIENIJ swój stół AUTO_INCREMENT = wartość”. Działa to jednak tylko wtedy, gdy
value
zmiana jest większa niż bieżąca maksymalna wartość kolumny autowzrostu. Zgodnie z dokumentacją MySQL 8 :Zasadniczo możesz zmienić AUTO_INCREMENT tylko w celu zwiększenia wartości kolumny autowzrostu, a nie resetować jej do 1, jak OP pyta w drugiej części pytania. Aby uzyskać opcje, które faktycznie pozwalają ustawić AUTO_INCREMENT w dół od jego aktualnego maksimum, spójrz na klucz główny Zmień kolejność / zeruj auto-przyrost .
źródło
Dodanie aktualizacji, ponieważ zmieniono funkcjonalność w MySQL 5.6. Począwszy od MySQL 5.6, możesz używać prostego ALTER TABLE z InnoDB:
Dokumenty są aktualizowane, aby odzwierciedlić to:
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
Moje testy pokazują również, że tabela NIE jest kopiowana, wartość jest po prostu zmieniana.
źródło
Istnieją dobre opcje podane w artykule Jak zresetować kolumnę Autoinkrementacji MySQL
Należy pamiętać, że
ALTER TABLE tablename AUTO_INCREMENT = value;
ma nie pracować dla InnoDBźródło
DELETE
(lubROLLBACK
) nie odzyska identyfikatorów. Jeden wyjątek: po restarcie (lub awarii) obliczany jest następny identyfikatorMAX(id)+1
, dzięki czemu skutecznie odzyskuje usunięte identyfikatory na końcu . Wyjątek od wyjątku: MySQL 8.0 pozostawia te identyfikatory nieużywane.Użyłem tego w niektórych moich skryptach, pole id jest usuwane, a następnie dodawane z poprzednimi ustawieniami, wszystkie istniejące pola w tabeli bazy danych są wypełniane nowymi wartościami automatycznego przyrostu, powinno to również działać z InnoDB.
Pamiętaj, że wszystkie pola w tabeli zostaną przeliczone i będą miały inne identyfikatory !!!
źródło
Możesz także użyć
TRUNCATE
tabeli składni w następujący sposób:TRUNCATE TABLE table_name
STRZEC SIĘ!!
TRUNCATE TABLE your_table
będzie usunąć wszystko w twoichyour_table
!!źródło
TRUNCATE
będzie również usunięcie wszystkich wierszy w określonej tabeli!TRUNCATE
zresetuje teżauto_increment
pola? Moim przypadkiem użycia jest wyczyszczenie starych danych w tabeli i ponowne uruchomienie identyfikatorów od 1 dla nowych danych (wyobraź sobie, wyczyść tabelę do prawidłowego użycia po zakończeniu testowania). Pomyślałem, że będę musiałDROP
cały stół iCREATE
jeszcze raz.auto_increment
wartość, użyjDELETE FROM
zamiastTRUNCATE
.dotyczy pustej tabeli:
jeśli masz dane, ale chcesz je uporządkować, polecam użyć tego:
źródło
Oto moje rozwiązanie, ale nie radzę tego robić, jeśli kolumna ma ograniczenia lub jest połączona jako klucz obcy z innymi tabelami, ponieważ miałoby to złe skutki lub nawet nie działałoby.
> Najpierw: upuść kolumnę
> Drugi: odtwórz kolumnę i ustaw ją jako PIERWSZĄ, jeśli chcesz, aby była pierwszą kolumną, którą zakładam.
To działa dobrze!
źródło
Począwszy od MySQL 5.6, poniższe podejście działa szybciej ze względu na DDL online (uwaga
algorithm=inplace
):alter table tablename auto_increment=1, algorithm=inplace;
źródło
Możesz po prostu obciąć tabelę, aby zresetować sekwencję
źródło
Próbowałem zmienić tabelę i ustawić auto_increment na 1, ale to nie działało. Postanowiłem usunąć nazwę kolumny, którą zwiększałem, a następnie utwórz nową kolumnę z preferowaną nazwą i ustaw nową kolumnę na zwiększenie od początku.
źródło
Licznik automatycznego przyrostu dla tabeli można (ponownie) ustawić na dwa sposoby:
Wykonując zapytanie, podobnie jak inni już wyjaśnili:
ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;
Korzystanie z Workbench lub innego wizualnego narzędzia do projektowania baz danych. Pokażę w Workbench, jak to się robi - ale w innych narzędziach też nie powinno być inaczej. Kliknij prawym przyciskiem myszy żądaną tabelę i wybierz
Alter table
z menu kontekstowego. Na dole możesz zobaczyć wszystkie dostępne opcje zmiany tabeli. Wybierz,Options
a otrzymasz ten formularz:Następnie ustaw żądaną wartość w polu,
Auto increment
jak pokazano na obrazku. Spowoduje to w zasadzie wykonanie zapytania pokazanego w pierwszej opcji.źródło
Aby zaktualizować najnowszy plus jeden identyfikator
źródło
ALTER TABLE tablename AUTO_INCREMENT = 1
źródło
Poszukałem go i znalazłem to pytanie, ale odpowiedź, której tak naprawdę szukam, spełnia dwa kryteria:
Ponieważ nie mogłem znaleźć dokładnie tego, czego chcę tutaj, wybrałem odpowiedź z różnych odpowiedzi i udostępniłem ją tutaj.
Kilka rzeczy do zapamiętania:
id
z typem asint
kluczem podstawowymKrok 1: Utwórz procedurę składowaną
Utwórz procedurę składowaną w następujący sposób:
Następnie uruchom.
Przed uruchomieniem wygląda to tak, gdy zajrzysz do Procedur składowanych w bazie danych.
Kiedy uruchamiam, po prostu wybieram procedurę przechowywaną i wciskam Uruchom zaznaczenie
Uwaga: część ograniczników ma kluczowe znaczenie. Dlatego jeśli skopiujesz i wkleisz z najlepszych odpowiedzi w tym pytaniu, zwykle nie działają one z tego powodu.
Po uruchomieniu powinienem zobaczyć procedurę przechowywaną
Jeśli chcesz zmienić procedurę przechowywaną, musisz usunąć procedurę przechowywaną, a następnie wybierz opcję ponownego uruchomienia.
Krok 2: Wywołaj procedurę przechowywaną
Tym razem możesz po prostu użyć zwykłych zapytań MySQL.
Pierwotnie z własnych notatek dotyczących zapytań SQL w https://simkimsia.com/library/sql-queries/#mysql-reset-autoinc i przystosowanych do StackOverflow
źródło
źródło
Spróbuj uruchomić to zapytanie
Lub wypróbuj to zapytanie, aby zresetować automatyczny przyrost
I ustaw automatyczny przyrost, a następnie uruchom to zapytanie
źródło
Sugeruję, aby przejść do przeglądarki zapytań i wykonać następujące czynności:
Auto_increment powinno zostać zresetowane do jednego po wprowadzeniu nowego wiersza w tabeli.
Nie wiem, co się stanie, jeśli spróbujesz dodać wiersz, w którym już istnieje wartość pola auto_increment.
Mam nadzieję, że to pomoże!
źródło
Najlepszym sposobem jest usunięcie pola za pomocą AI i dodanie go ponownie za pomocą AI, działa dla wszystkich tabel
źródło