Resettare le colonne autoincrement in MySQL

Mattepuffo's logo
Resettare le colonne autoincrement in MySQL

Resettare le colonne autoincrement in MySQL

Uno dei problemi delle colonne autoincrement, è come poterle resettare se se ne ha la necessità.

Ad esempio se abbiamo finito i testi su un programma, e vogliamo ricominciare con una situazione pulita.

O solo se semplicemente abbiamo la necessità di svuotare una tabella.

Come possiamo resettare l'indice autoincrement?

Abbiamo varie possibilità.

Quella più veloce è di usare la funzione TRUNCATE:

TRUNCATE tabella;

Ma ovviamente perdereste i dati; dipende da che dovete farci con quella tabella.

Un'altra possibilità è usare il comando ALTER:

ALTER table AUTO_INCREMENT = 1;

Così facendo riportiamo l'indice a uno; ma non funziona per le tabelle InnodDB, in quanto il valore non può essere minore dell'indice più grande raggiunto.

Se la tabella è vuota, non ci sono problemi; se invece la tabella ha dei record, verrà imposato il prossimo autoindex più grande.

L'altra soluzione, la più drastica, è cancellare e ricreare la tabella:

DROP table;
CREATE table {...};

Ma ovviamente perdereste i dati; dipende da che dovete farci con quella tabella.

Infine:

SET @num := 0;
UPDATE tabella SET id = @num := (@num+1);
ALTER TABLE tabella AUTO_INCREMENT = 1;

Questo fa un UPDATE, e quindi va solo ad aggiornare il campo, cominciando a contare da zero.

In ogni caso, dovete fare molta attenzione ad eventuali altre tabelle collegate.

Se sono collegate tramite Foreign Key, accertatevi del tipo di operazioni che deve essere svolta sulla tabella collegata in caso di cancellazione (ON DELETE).

Se non hanno un vincolo di integrità, non vi verrà segnalato nessun errore, ma potreste avere poi dei problemi nei vostri programmi.

Quindi fate attenzione!

Enjoy!


Condividi

Commentami!