In MySQL, a volte, può essere utile effettuare una riassegnazione del valore di un campo di tipo AUTO_INCREMENT (ad esempio il valore univoco ID che spesso viene assegnato a ciascun record). E’ buona norma non alterare una colonna con identificativi univoci ma, in talune circostanze (quando, ad esempio, l’ID non è utilizzato per creare JOIN con dati presenti in altre tabelle e non è un elemento persistente all’interno del nostro applicativo) è anche possibile avere la necessità di effettuare il reset degli ID, mediante una nuova assegnazione che, partendo da uno, eliminerà ogni eventuale "buco" di numerazione..
Al fine di svolgere questa operazione di reset di un campo auto-incrementale in MySQL è possibile utilizzare questa semplice query:
SET @num := 0;
UPDATE nome_tabella SET nome_campo = @num := (@num+1);
ALTER TABLE nome_tabella AUTO_INCREMENT =1;
Il codice, ovviamente, deve essere modificato in base alla struttura della tabella sulla quale si desidera intervenire, in pratica:
- deve essere sostituito "nome_tabella" col nome effettivo della tabella su cui si vuole applicare la modifica;
- deve essere sostituito "nome_campo" col nome del campo AUTO_INCREMENT che si desidera resettare.
Supponiamo di voler resettare il campo ID di una ipotetica tabella prodotti, per farlo utilizzeremo questo codice:
SET @num := 0;
UPDATE prodotti SET id = @num := (@num+1);
ALTER TABLE prodotti AUTO_INCREMENT =1;