Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    55

    Quesito su campi auto_increment

    Immaginiamo una tabella del genere

    codice:
    tabella(
      campo_id bigint(20) not null auto_increment,
      campo_dati varchar(25) not null,
      primary key (campo_id)
    );
    e di fare le seguenti query:

    codice:
    INSERT INTO tabella(campo_dati) VALUES('Valore di prova 1');
    DELETE FROM tabella;
    INSERT INTO tabella(campo_dati) VALUES('Valore di prova 2');
    SELECT * FROM tabella;
    Avremo quindi in output una cosa del genere

    +----------+------------------+
    | campo_id | campo_dati |
    +----------+------------------+
    | 2 | Valore di prova 2 |
    +----------+------------------+

    1 row in set (0.05 sec)
    Come si può notare, il campo_id ha valore 2, mentre il valore 1 rimane inutilizzato.
    Ora, datemi pure del pazzoide ma la cosa mi infastidisce!
    Esiste una query che impedisce che succeda questo o comunque un modo per evitarlo?

    In locale risolvevo facendo dopo l'eliminazione un'ottimizazione della tablella (optimize table tablella) ma quando ho caricato il database sullo spazio avuto con l'hosting, ho notato che lì, l'ottimizzazione non cambia nulla!

    A voi la parola e grazie per l'attenzione.

  2. #2
    da quel che ne so essendo auto increment il valore dell'id non va mai a ritroso e non può essere modificato se non a mano... quindi una volta che un valore viene cancellato, il corrispondente id non verrò mai riscritto o riutilizzato

  3. #3
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    All' INSERT successivo alla cancellazione puoi dare tu il valore dell'ID in questa maniera:

    Codice PHP:
    SELECT MAX(campo_idFROM tabella 
    Cosi facendo utilizzi sempre il valore sucessivo dell'ID, non lasciandone di inutilizzati...ovviamente cosi facendo il campo auto_increment diventa totalment einutile.



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.