Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    5

    [mysql] Dimensionare tabella

    Salve a tutti volevo sapere se era possibile assegnare ad una tabella del mio database un numero preciso di record, e una volta raggiunto il numero iniziare a sovrascrivere dal primo record.
    Grazie

  2. #2
    CREDO ci sia una qualche opzione più facile ma io penso che potresti fare una condizione che dopo un tot di record cominci a modificare dal primo..es:

    nella tabella hai gli id (auto-increment) da 1 a 30 (mettiamo che 30 sia il num tot). Puoi fare una condizione che se quell'id è minore di 30 , inserisce ancora..appena arriva a 30 passa all'UPDATE del primo...e cosi' via...in qualche modo dovresti far capire allo script che se hai modificato il primo campo, deve passare al secondo ...questo magari lo puoi fare mettendo un campo GIRO alla tabella, dove indichi quante volte hai modificato quel campo...cosi' per esempio avrai una cosa simile


    ID NOME GIRO
    1 xxxxxx 2
    2 xxxxxx 2
    3 xxxxxx 1
    4 xxxxxx 1
    5 xxxxxx 1
    ..
    ..
    30 xxxxxx 1

    e sai che devi modificare il TERZO campo....ovviamente in realtà è un codice molto piccolo...pero' forse c'e' una soluzione più semplice io ho dato solo un idea.

  3. #3
    Farei come ha detto darkhero con una piccolissima differenza:
    usa sempre REPLACE, così funziona a prescindere che il record esista già oppure no
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  4. #4
    Ah si vero, per ora sto studiando anche altri linguaggi e ho confusione xD col REPLACE eviti qualche condizione

  5. #5
    Scusa ora ho letto meglio

    La cosa migliore sarebbe metterci 30 record fittizi, con un id da 1 a 30, ma inserirli al contrario (dal 30 all'1). Questa tabella dovrebbe contenere un TIMESTAMP che si aggiorna ad ogni modifica (ON UPDATE CURRENT TIMESTAMP).
    Non inserisci mai i record ma li modifichi sempre con un'istruzione del genere:

    UPDATE ... ORDER BY colonna_timestamp LIMIT 1
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  6. #6
    Secondo me conviene usare un modulo come GIRO anzichè il timestamp, è più elementare

  7. #7
    Non so cosa sia giro, il timestamp è gestito internamente da MySQL e quindi non può esserci una soluzione "più elementare"
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  8. #8
    Io non ricordo il funzionamento , ma quando vai ad inserire un campo, come fa a sapere che campo deve modificare? cioe' , il timestamp mette una data , se deve fare un controllo su una data è più difficile di un controllo su un campo

  9. #9
    Il timestamp è il numero di secondi trascorsi dalla Unix Epoch, cioè l'inizio del 1970. In MySQL può avere una precisione fino al microsecondo. Se lo crei con una precisione di 6 e con l'opzione ON UPDATE CURRENT TIMESTAMP, ogni volta che aggiorni una riga, si aggiorna quel valore con una precisione fino al microsecondo. E' impossibile averne due uguali, in un ambiente normale.

    Per aggiornare l'ultima riga, l'ho già scritto come si fa:

    UPDATE ... ORDER BY col_timestamp LIMIT 1;
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

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.