Automatyczny przyrost w phpmyadmin


96

Mam istniejącą bazę danych używającą PHP, MySQL i phpMyAdmin.

Kiedy użytkownicy stają się członkami mojej witryny, potrzebuję, aby system utworzył dla nich unikalny numer członkostwa, składający się z pięciu cyfr. na przykład 83773. Przypuszczam, że jest to jak generowanie losowego hasła, z wyjątkiem tego, że chcę tylko numery dla moich członków. Ten numer identyfikacyjny musi być niepowtarzalny dla każdego członka.

Czy byłoby możliwe ustawienie klucza podstawowego na auto_increment w mojej tabeli użytkowników i ustawienie go tak, aby zaczynał się od 10000, a następnie automatycznie zwiększał się za każdym razem, gdy rejestruje się członek?

Ponadto, czy istnieje maksymalna liczba, do której mógłby wzrosnąć numer identyfikacyjny klucza podstawowego?

Czy jest to niezawodny i bezpieczny sposób używania numeru identyfikacyjnego klucza podstawowego jako numeru członkowskiego?


3
Niektórzy z poniższych osób odpowiedzieli, że nie ma górnego limitu klucza podstawowego, ale zakładam, że górny limit to maksymalny rozmiar wybranego typu danych ... może się mylę, ale nie byłoby ograniczone do maksymalnej wartości 4294967295? dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Sam

Wybierz zaakceptowaną odpowiedź. Myślę, że to jest ten stackoverflow.com/a/18942684/248616
Nam G VU

Odpowiedzi:


202

Istnieją możliwe kroki, aby włączyć automatyczne zwiększanie wartości dla kolumny. Wydaje mi się, że wersja phpMyAdmin to 3.5.5, ale nie jestem pewien.

Kliknij kartę Tabela > Struktura > w obszarze Akcja kliknij opcję Podstawowa (ustaw jako podstawową), kliknij opcję Zmień w wyskakującym okienku, przewiń w lewo i zaznacz opcję A_I . Upewnij się również, że wybrałeś Brak jako Domyślnywprowadź opis obrazu tutaj


5
Ponieważ funkcja automatycznego włączania została usunięta z karty Operacje, wygląda na to, że teraz należy ją wdrożyć. Dzięki, @AmitKB.
Mike S.

2
Jednak kiedy próbowałem, pojawił się ten błąd: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Yaakov Ainspan,

Wiadomość jest jasna, możesz próbować mieć więcej niż jedną kolumnę automatyczną.
Amit Bhagat,

1
Miałem podobny problem i to rozwiązało mój problem
Callat

1
wow, takie proste. dlaczego nikt o tym nie wspomniał? tyle czasu zajęło mi znalezienie takiej odpowiedzi. zdecydowanie najlepsza odpowiedź.
oldboy,

53

W phpMyAdmin przejdź do odpowiedniej tabeli i kliknij kartę „Operacje”. Po lewej stronie pod opcjami tabeli będziesz mógł ustawić bieżącą wartość AUTO_INCREMENT.


5
kiedy to robię, jedynymi opcjami dotyczącymi dodawania auto_increment są „przenieś tabelę do” lub „skopiuj tabelę do”. nie chcę przenosić ani kopiować tabeli, ale po prostu dodaję auto_increment. co się dzieje?? Używam MySQL v5.6.
oldboy,

@oldboy, mam to samo co ty. Być może usunęli tę funkcję w nowszych wersjach XAMPP PhpMyAdmin
kevind

21

Po prostu uruchom proste zapytanie MySQL i ustaw liczbę automatycznych inkrementów na dowolną liczbę.

ALTER TABLE `table_name` AUTO_INCREMENT=10000

Jeśli chodzi o maksimum, o ile wiem, nie ma ani sposobu, aby ograniczyć taką liczbę.

Jest całkowicie bezpiecznym i powszechną praktyką ustawianie numeru identyfikacyjnego jako klucza podstawowego, automatycznie zwiększając int. Istnieją alternatywy, takie jak użycie PHP do generowania numerów członkostwa w określonym formacie, a następnie sprawdzenie, czy numer nie istnieje przed wstawieniem, jednak dla mnie osobiście wybrałbym podstawową wartość auto_inc id.


10
  1. W zakładce „Struktura” tabeli
  2. Kliknij ołówek zmiennej, której chcesz użyć auto_increment
  3. w zakładce „Dodatkowe” wybierz „auto_increment”
  4. następnie przejdź do zakładki „Operacje” w swoim stole
  5. W sekcji „Opcje tabeli” -> typ auto_increment -> 10000

2

W phpMyAdmin, jeśli ustawisz pole w swojej tabeli na automatyczne zwiększanie, a następnie wstawisz wiersz i ustawisz wartość tego pola na 10000, będzie ono kontynuowane.


2

@AmitKB, Twoja procedura jest prawidłowa. Chociaż ten błąd

Błąd zapytania: # 1075 - Niepoprawna definicja tabeli; może istnieć tylko jedna kolumna automatyczna i musi być zdefiniowana jako klucz

można rozwiązać, najpierw oznaczając pole jako klucz (za pomocą ikony klucza z etykietą podstawową), chyba że masz inny klucz, to może nie działać.


Minęło tak dużo czasu, odkąd grałem z phpMyAdminem, zapomniałem, jak to zrobić. Dzięki za naprawienie tego drugorzędnego problemu. U mnie to zadziałało.
rncrtr

0

Nie możesz ustawić maksymalnej wartości (poza wyborem typu danych, który nie może pomieścić dużych liczb, ale nie ma takiej, która ma limit, o który prosisz). Możesz to sprawdzić za pomocą LAST_INSERT_ID () po wstawieniu, aby uzyskać identyfikator nowo utworzonego członka, a jeśli jest zbyt duży, to możesz to zrobić w kodzie aplikacji (np. Usuń i odrzuć członka).

Dlaczego chcesz mieć górny limit?


0

Wynika to z wp_terms, wp_termmetai wp_term_taxonomystoły, który miał wszystkie ich ID nie jest ustawionyAUTO_INCREMENT

Aby to zrobić przejdź do phpmyadmin, kliknij na bazę danych, wp_termstabelę, kliknij na zakładkę struktury, po prawej stronie zobaczysz zakładkę o nazwie A_I(AUTO_INCREMENT), zaznacz ją i zapisz (robisz to tylko dla pierwszej opcji, jeśli wp_termtak robię to tylko dla term_id).

Zrób to samo dla, wp_termmetaa wp_term_taxonomyto rozwiąże problem.


Wygląda na to, że myślisz, że OP korzysta z WordPress, gdzie znalazłeś te informacje? W pytaniu nie mogę znaleźć żadnych odniesień do WP.
Raul Sauco,

0

(a) Po prostu kliknij swoją bazę danych i wybierz tabelę. Kliknij „Operacje”. W sekcji „opcje tabeli” zmień wartość AUTO_INCREMENT na żądaną wartość, w tym przypadku: 10000 i kliknij „Idź”. (Zobacz załączony obraz)

(b) Alternatywnie możesz uruchomić polecenie SQL w zakładce SQL po wybraniu tabeli. Po prostu wpisz „ALTER TABLE nazwa_tabeli AUTO_INCREMENT = 10000;” następnie kliknij „Idź”. Otóż ​​to!! Obraz USTAWIANIE WARTOŚCI AUTOMATYCZNEGO PRZYROSTU (a)

Obraz USTAWIANIE WARTOŚCI AUTOMATYCZNEGO PRZYROSTU (B)

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.