Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [MYSLQ] Autoincrement

  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    [MYSLQ] Autoincrement

    Ciao a tutti,

    Tempo fa avevo letto un articolo in giro che spiegava a fronte dell' engine utilizzato dalla tabella (MYSQL, INNODB) le differenze del campo autoincrement.
    In particolare se non erra veniva specificato che in uno dei due engine il campo autoincrement si azzerava al riavvio del motore database, però non ricordo in quale tipo di engine.

    Aimè non riesco più neanche a trovare l'articolo, mi potete aiutare?

    Ciao
    Grazie
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    non conosco così bene mysql, ma spero proprio che non sia così!

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Purtroppo si ricordo di aver letto che uno degli engine non scrive l'increment su disco, ed al riavvio va a beccare il primo disponibile (mettendo che ci siano dei buchi).
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    La differenza è questa:

    Tu con ALTER TABLE puoi decidere che il prossimo valore auto_increment sarà 200. Ma se questo valore non viene inserito e tu stoppi/riavvii il server, InnoDB si dimenticherà la tua richiesta. MyISAM invece se la ricorda.

    Ma questo non deve essere un problema. Ricorda che AUTO_INCREMENT non può e non deve servire per ordinare i risultati, ma solo per avere un numero unico. Nient'altro. Non è possibile farci nient'altro, anche perché tieni presente che i buchi (che si creano per esempio dopo una DELETE) non vengono riutilizzati. E InnoDB può lasciare altri buchi, per esempio se una transazione "prenota" un valore ma poi fallisce.

    Se questo ti sembra un problema, ti consiglio di riprogettare la tua tabella.

  5. #5
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Ok ma se io ho i seguenti valori
    1,2,4,5 engine tabella innodb
    Ammettiamo che il valore auto_increment della tabella sia 6.
    Riavvio il db.
    Il prossimo valore inserito del campo sarà 6 o 3?

    In sostanza io avrei bisogno di un valore sempre univoco per quella tabella nulla di più, tenendo conto che un determinato record può essere eliminato e l'id utilizzato in precedenza non deve essere riutilizzato.

    Avrei bisogno di un id univoco sempre incrementale.
    Che mestiere difficile.....essere da soli ancora di più

  6. #6
    Aaaah, ok. Puoi stare tranquillo, il prossimo valore sarà 6. O potrebbe essere più alto (con InnoDB) ma non sarà sicuramente 3.

  7. #7
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Per cui il problema si presenta solo quando vado ad utilizzare l'alter table?

    Nel caso venissero cancellati tutti i record?
    Riavvio DB
    Il valore partirebbe da 1 oppure dall'ultimo inserito + 1?

    Non ho ben capito bene la differenza o meglio a cosa potrei andare in contro nel caso di inoodb.
    Mi dispiacerebbe abbandonarla, solo per il fatto delle transazioni che posso fare comodo.
    Che mestiere difficile.....essere da soli ancora di più

  8. #8
    I vecchi id non vengono mai riutilizzati.

    La questione dell'alter table è una feature stupida, che non andrebbe usata. Serve ad alzare l'auto_increment, per esempio se è a 10 puoi portarlo a 20 con un'alter table, e la differenza è che con InnoDB non funziona se riavii subito il server. Ma dimenticalo

  9. #9
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Ok, allora da quanto ho capito non dovrei avere problemi.
    Grazie mille per la consulenza
    Che mestiere difficile.....essere da soli ancora di più

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.