Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente bannato
    Registrato dal
    Apr 2003
    Messaggi
    1,119

    [MySQL] id auto_increment con cancellazione riga

    salve.
    ho una tabella con vari campi tra cui il classico

    >'id' INT(5) NOT NULL AUTO_INCREMENT

    facciamo che ho 5 righe:
    se cancello una riga con

    >DELETE FROM tabella WHERE id='5';

    l'id non torna indietro, ma rimane al 5 come se la riga 5 esistesse ancora...
    quindi se inserisco un'altra riga il suo id è 6!!!
    come posso ovviare a questo problema?

  2. #2
    Invece che mettere un auto increment metti un campo
    >'id' INT(5) NOT NULL unique
    , e lo incrementi a mano ogni volta che fai un inserimento.

    Però il discorso si complica nel caso in cui vai a eliminare una riga intermedia: se hai 5 righe e cancelli la 3, come ti comporti?

    Cmq basta impostare un algoritmo di assegnamento del campo id che risponda alle tue esigenze.

    Se posti il motivo per cui ti serve avere gli id continuii possiamo aiutarti meglio.

  3. #3
    Utente bannato
    Registrato dal
    Apr 2003
    Messaggi
    1,119
    Originariamente inviato da Beppesan
    Invece che mettere un auto increment metti un campo
    >'id' INT(5) NOT NULL UNIQUE
    e lo incrementi a mano ogni volta che fai un inserimento.
    è l'unica soluzione? 'abbè... ()
    Però il discorso si complica nel caso in cui vai a eliminare una riga intermedia: se hai 5 righe e cancelli la 3, come ti comporti?
    no quello non lo faccio!
    Se posti il motivo per cui ti serve avere gli id continui possiamo aiutarti meglio.
    perchè devo fare un for!

  4. #4
    altrimenti se ti serve solo assegnare l'ID 5 al prossimo inserimento fai
    ALTER TABLE nome_tabella auto_increment=0

    in questo modo ti verrà assegnato il valore minimo disponibile (nel tuo caso 5)

  5. #5
    perchè devo fare un for!
    Potresti essere più esplicito? Un for per scorrere tutte le righe che ottieni dall'esecuzione della query sql lo puoi fare comunque..., e se devi visualizzare un numero crescente (es. per un elenco), contare o qualcos'altro di simile, puoi usare un contatore all'interno del ciclo.

  6. #6
    Utente bannato
    Registrato dal
    Apr 2003
    Messaggi
    1,119
    Originariamente inviato da Beppesan
    Un for per scorrere tutte le righe che ottieni dall'esecuzione della query sql lo puoi fare comunque
    e COME?
    se ho id 1,2,3,4,23,24,25 mi fa un sacco di giri inutilmente!

  7. #7
    forse il problema non è l'assegnazione degli id ma come fai a scorrere un recordset

    vuoi postare il codice incriminato che se si può ti si da una mano?

  8. #8
    appunto come sospsettavo, ammettendo che tu usi mysql:

    $sql = 'select * from tabella';
    $rs = mysql_query($sql);
    while ($row = mysql_fetch_array($rs))
    {
    echo $row['nome_campo'];
    }

    in questo modo scorri tutto il recordset senza usare il ciclo for.




  9. #9
    Utente bannato
    Registrato dal
    Apr 2003
    Messaggi
    1,119
    non è così semplice perchè ho vari file e una funzione...
    sarebbe troppo complicato da spiegare...

    voglio solo "resettare" l'auto_increment in modo che in tre righe gli id siano 1,2,3

  10. #10
    Utente bannato
    Registrato dal
    Apr 2003
    Messaggi
    1,119
    uppettino :gren:

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.