Incremento automatico in phpmyadmin


94

Ho un database esistente che utilizza PHP, MySQL e phpMyAdmin.

Quando gli utenti diventano membri del mio sito Web, è necessario che il sistema crei un numero di iscrizione univoco per loro utilizzando un numero di cinque cifre. per esempio 83773. Immagino che sia come generare una password casuale tranne che voglio solo numeri per i miei membri. Questo numero ID deve essere univoco per ogni membro.

Sarebbe possibile per me impostare la chiave primaria su auto_increment nella mia tabella utente e impostarla in modo che inizi a 10000 e quindi aumenti automaticamente ogni volta che un membro si registra?

Inoltre, esiste un numero massimo a cui dovrebbe arrivare il numero ID della chiave primaria?

È un modo affidabile e sicuro per utilizzare il numero ID della chiave primaria come numero di iscrizione?


3
Alcune delle persone di seguito hanno risposto che non esiste un limite superiore per la chiave primaria, ma presumo che il limite superiore sia la dimensione massima del tipo di dati selezionato ... forse mi sbaglio, ma non lo sarebbe limitato ad un valore massimo di 4294967295 quindi? dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Sam

Si prega di raccogliere la risposta accettata. Penso che questo sia quello stackoverflow.com/a/18942684/248616
Nam G VU

Risposte:


201

Sono possibili passaggi per abilitare l'incremento automatico per una colonna. Immagino che la versione di phpMyAdmin sia 3.5.5 ma non ne sono sicuro.

Fare clic su Tabella > scheda Struttura > Sotto Azione Fare clic su Primario (impostato come primario), fare clic su Modifica nella finestra a comparsa, scorrere a sinistra e selezionare A_I . Assicurati anche di aver selezionato Nessuno per Predefinitoinserisci qui la descrizione dell'immagine


5
Poiché la funzione auto-inc è stata rimossa dalla scheda Operazioni, sembra che questo sia il modo per implementarla ora. Grazie, @AmitKB.
Mike S.

2
Tuttavia, quando ho provato ho ricevuto questo errore: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Yaakov Ainspan

Il messaggio è chiaro, potresti provare ad avere più di una colonna automatica.
Amit Bhagat

1
Ho avuto un problema simile e questo ha risolto il mio problema
Callat

1
wow, così semplice. perché nessuno ne ha parlato? Mi ci è voluto così tanto tempo per trovare una risposta come questa. di gran lunga la migliore risposta.
oldboy

52

In phpMyAdmin, vai alla tabella in questione e fai clic sulla scheda "Operazioni". A sinistra, sotto Opzioni tabella, ti sarà permesso di impostare il valore AUTO_INCREMENT corrente.


5
quando lo faccio le mie uniche due opzioni per quanto riguarda l'aggiunta di auto_increment sono "sposta la tabella in" o "copia la tabella in". non voglio né spostare né copiare la tabella, ma semplicemente aggiungere auto_increment. cosa sta succedendo?? sto usando MySQL v5.6.
oldboy

@oldboy I get the same as you. Forse hanno rimosso la funzione nelle versioni più recenti di XAMPP PhpMyAdmin
kevind

21

Basta eseguire una semplice query MySQL e impostare il numero di incremento automatico su quello che vuoi.

ALTER TABLE `table_name` AUTO_INCREMENT=10000

In termini di massimo, per quanto ne so non ce n'è uno, né esiste alcun modo per limitare tale numero.

È perfettamente sicuro e pratica comune impostare un numero ID come chiave primaria, con incremento automatico int. Esistono alternative come l'utilizzo di PHP per generare i numeri di iscrizione per te in un formato specifico e quindi controllare che il numero non esiste prima dell'inserimento, tuttavia per me personalmente sceglierei il valore auto_inc dell'id primario.


10
  1. Nella scheda "Struttura" della tua tabella
  2. Fare clic sulla matita della variabile che si desidera auto_increment
  3. nella scheda "Extra" scegli "auto_increment"
  4. quindi vai alla scheda "Operazioni" della tua tabella
  5. In "Opzioni tabella" -> tipo auto_increment -> 10000

2

In phpMyAdmin, se imposti un campo nella tabella per l'incremento automatico, quindi inserisci una riga e imposti il ​​valore di quel campo su 10000, continuerà da lì.


2

@AmitKB, la tua procedura è corretta. Sebbene questo errore

Errore di query: # 1075 - Definizione di tabella errata; può esserci solo una colonna auto e deve essere definita come chiave

può essere risolto contrassegnando prima il campo come chiave (utilizzando l'icona della chiave con l'etichetta primaria), a meno che non si disponga di un'altra chiave, potrebbe non funzionare.


È passato così tanto tempo da quando ho giocato con phpMyAdmin che mi sono dimenticato come farlo. Grazie per la correzione a questo problema secondario. Ha funzionato per me.
rncrtr

0

Non è possibile impostare un valore massimo (diverso dalla scelta di un tipo di dati che non può contenere numeri grandi, ma non ce ne sono che hanno il limite richiesto). Puoi verificarlo con LAST_INSERT_ID () dopo l'inserimento per ottenere l'id del membro appena creato, e se è troppo grande gestirlo nel codice dell'applicazione (ad esempio, elimina e rifiuta il membro).

Perché vuoi un limite massimo?


0

Ciò è dovuto alle tabelle wp_terms, wp_termmetae wp_term_taxonomy, su cui tutti gli ID non erano impostatiAUTO_INCREMENT

Per fare questo vai su phpmyadmin, fai clic sul database interessato, sulla wp_termstabella, fai clic sulla scheda della struttura, sul lato destro vedrai una scheda denominata A_I(AUTO_INCREMENT), selezionala e salva (lo stai facendo solo per la prima opzione, nel caso wp_termtu sia farlo solo per term_id).

Fai lo stesso per wp_termmetae wp_term_taxonomyquesto risolverà il problema.


Sembra che tu pensi che l'OP stia usando WordPress, dove hai trovato queste informazioni? Non riesco a trovare alcun riferimento a WP nella domanda.
Raul Sauco

0

(a) Basta fare clic sul database, selezionare la tabella. Fare clic su "Operazioni". Nella sezione "Opzioni tabella" modifica il valore AUTO_INCREMENT con il valore desiderato, in questo caso: 10000 il clic "Vai". (Vedi immagine allegata)

(b) In alternativa, è possibile eseguire un comando SQL nella scheda SQL dopo aver selezionato la tabella. Digita semplicemente "ALTER TABLE nome_tabella AUTO_INCREMENT = 10000;" quindi fare clic su "Vai". Questo è tutto!! IMPOSTAZIONE DEL VALORE DI INCREMENTO AUTOMATICO immagine (a)

IMPOSTAZIONE DEL VALORE DI INCREMENTO AUTOMATICO immagine (B)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.