Jak ustawić wartość początkową i automatyczny przyrost w MySQL?


288

Jak ustawić wartość początkową dla kolumny „id” w tabeli MySQL, która zaczyna się od 1001?

Chcę zrobić wkładkę "INSERT INTO users (name, email) VALUES ('{$name}', '{$email}')";

Bez określania wartości początkowej dla kolumny id.

Odpowiedzi:


518

Użyj tego:

ALTER TABLE users AUTO_INCREMENT=1001;

lub jeśli nie dodałeś jeszcze kolumny identyfikatora, dodaj ją

ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);

2
Zdaję sobie sprawę, że to było 7 lat temu, ale ... Czy mogę uzyskać wyjaśnienie części tej odpowiedzi? Co ADD INDEXtu robi? Czy muszę dodać go do tej samej instrukcji co idkolumna, czy też mogę zdefiniować idkolumnę w CREATE TABLEbloku, a następnie ADD INDEX(id)?
Michael Hoffmann

2
Heh, czas mija ... Jasne, zdefiniuj go w CREATE TABLE, jeśli możesz to zrobić. Druga część odpowiedzi „ALTER TABLE” sugeruje, że już utworzyłeś tabelę i prawdopodobnie jest ona już wdrożona gdzieś bez odpowiedniego indeksu, który jest wymagany, aby pierwsza „ALTER TABLE” działała zgodnie z przeznaczeniem. Mam nadzieję, że to wyjaśnienie pomoże.
Anatoliy,

Tak, to pomaga. Patrzyłem na próbki, które wykorzystywały te stwierdzenia w podobny sposób, i mają teraz większy sens. Dziękuję Ci.
Michael Hoffmann

1
Przyczyną DODAJ INDEKS jest to, że bez niego, jeśli masz już klucz podstawowy w istniejącej tabeli, otrzymasz there can be only one auto column and it must be defined as a key. Potrzebujesz indeksu, aby był to klucz MUL.
djsumdog

Próbowałem tego na tabeli, która została właśnie utworzona bez dodanych jeszcze wierszy. Wygląda na to, że to nie działa, chyba że do tabeli dodano przynajmniej 1 wiersz.
Solomon Closson

54

MySQL - Skonfiguruj automatycznie zwiększający klucz podstawowy, który zaczyna się od 1001:

Krok 1, stwórz swój stół:

create table penguins(
  my_id       int(16) auto_increment, 
  skipper     varchar(4000),
  PRIMARY KEY (my_id)
)

Krok 2, ustaw numer początkowy klucza podstawowego automatycznego przyrostu:

ALTER TABLE penguins AUTO_INCREMENT=1001;

Krok 3, wstaw kilka wierszy:

insert into penguins (skipper) values("We need more power!");
insert into penguins (skipper) values("Time to fire up");
insert into penguins (skipper) values("kowalski's nuclear reactor.");

Krok 4, zinterpretuj wynik:

select * from penguins

drukuje:

'1001', 'We need more power!'
'1002', 'Time to fire up'
'1003', 'kowalski\'s nuclear reactor'

1
Jak powinienem zrobić, jeśli chcę ustawić identyfikator <1000 dla specjalnych pingwinów?
William Hu

1
Możesz wstawić dowolny darmowy identyfikator, po prostu umieść go na liście kolumn: insert into penguins (my_id, skipper) values(999, "explicit id");(w przypadku użycia 0zamiast 999automatycznego przyrostu zostanie wstawiona wartość)
kod piekła

32

MySQL Workbench

Jeśli chcesz uniknąć pisania sql, możesz to zrobić w MySQL Workbench, klikając prawym przyciskiem myszy tabelę, z menu wybierz „Zmień tabelę ...”.

Gdy otworzy się widok struktury tabeli, przejdź do zakładki „Opcje” (w dolnej dolnej części widoku) i ustaw w polu „Auto increment” wartość następnego numeru autoinkrementu.

Nie zapomnij nacisnąć „Zastosuj” po zakończeniu wszystkich zmian.

PhpMyAdmin:

Jeśli używasz phpMyAdmina, możesz kliknąć tabelę w lewej nawigacji, przejść do zakładki „Operacje” iw obszarze Opcje tabeli zmienić wartość AUTO_INCREMENT i kliknąć OK.


1
Mówisz o phpMyAdmin?
Pacerier

1
Nie, myślę, że mówi o MySQL Workbench.
Saturnian

@Saturnian, tak masz rację, miałem na myśli Workbench. Przeredaguję mój post, aby to wyjaśnić.
Bojan Hrnkas

phpMyAdmin rozwiązał problem autoakrementacji w jednym kroku, próbowałem przejść trasę kodu i to nie działało.
tekagami

11

Najpierw musisz dodać kolumnę do automatycznego przyrostu

alter table users add column id int(5) NOT NULL AUTO_INCREMENT FIRST

To zapytanie dotyczące dodawania kolumny na początku. Teraz musisz zresetować wartość początkową automatycznego przyrostu. Więc użyj tego zapytania

alter table users AUTO_INCREMENT=1001

Teraz twój stół zaczął się od 1001


6

Możesz również ustawić to w create tablezestawieniu.

`CREATE TABLE(...) AUTO_INCREMENT=1000`

5

Ponadto w PHPMyAdmin możesz wybrać tabelę z lewej strony (lista tabel), a następnie zrób to, przechodząc tam.
Zakładka Operacje-> Opcje tabeli-> AUTO_INCREMENT.

Teraz ustaw swoje wartości, a następnie naciśnij przycisk Idź w obszarze Opcje tabeli Bo x.


4

W tym celu musisz ustawić AUTO_INCREMENTwartość

ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>

Przykład

ALTER TABLE tablename AUTO_INCREMENT = 101

3

Alternatywnie, jeśli jesteś zbyt leniwy, aby napisać zapytanie SQL. To rozwiązanie jest dla Ciebie. wprowadź opis zdjęcia tutaj

  1. Otwórz phpMyAdmin
  2. Wybierz żądaną tabelę
  3. Kliknij kartę Operacje
  4. Ustaw żądaną wartość początkową dla AUTO_INCREMENT
  5. Gotowe..!
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.