Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    107

    mysql: contatore automatico di update

    Buongiorno, posto che il problema è facilmente risolvibile con PHP (o qual si voglia codice di programmazione io stia utilizzando), mi chiedevo se ci fosse un modo per automatizzare la cosa all'interno del db risparmiando così del codice lato server:

    è possibile creare un campo che si autoincrementi ogni volta che la sua relativa tupla subisce un update?

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    287
    ciao puoi usare i trigger.

    Crei un campo contatore di tipo int sulla tabella che ti interessa.

    Poi associ a tale tabella un trigger, il quale BEFORE UPDATE viene incrementato di 1 quindi, contatore = contatore +1

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    107
    Mmm...perdona...una cosa del genere?
    codice:
    CREATE TRIGGER `update counter` BEFORE UPDATE ON `agenda` FOR EACH ROW num_upd = num_upd + 1
    Non me la accetta...inoltre credo che così facendo vengano contati gli update eseguiti su tutta la tabella e non sulla singola tupla, no?

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    287
    Quote Originariamente inviata da l736k Visualizza il messaggio
    Mmm...perdona...una cosa del genere?
    codice:
    CREATE TRIGGER `update counter` BEFORE UPDATE ON `agenda` FOR EACH ROW num_upd = num_upd + 1
    Non me la accetta...inoltre credo che così facendo vengano contati gli update eseguiti su tutta la tabella e non sulla singola tupla, no?
    devi indicargli di operare solo sulla riga di interesse, SET NEW.num_upd = NEW.num_upd+1;

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    107
    funziona! grazie!

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    287
    prego

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    107
    perdonami se ti disturbo ancora ma ci sto prendendo gusto con i trigger che non avevo mai utilizzato prima

    a questo punto, se volessi creare un record delle revisioni alla tupla...

    che poi bisognerebbe concatenare i dati in modo ordinato...forse questo conviene farlo da codice? ripescare il vecchio codice e creare un log di modifica ad hoc...?

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    287
    Quote Originariamente inviata da l736k Visualizza il messaggio
    perdonami se ti disturbo ancora ma ci sto prendendo gusto con i trigger che non avevo mai utilizzato prima

    a questo punto, se volessi creare un record delle revisioni alla tupla...

    che poi bisognerebbe concatenare i dati in modo ordinato...forse questo conviene farlo da codice? ripescare il vecchio codice e creare un log di modifica ad hoc...?
    ciao,
    scusami non mi e' chiaro cosa vuoi fare

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    107
    lo scopo è creare un log degli update apportati alla tupla...ad ogni log, prendi l'elenco dei valori che stanno per essere aggiornati, i rispettivi predecessori, e nella colonna "revisioni" mi crei: "21/02/14 09.45 cambiato 'status' da 1 a 2, cambiata 'descrizione' da testo a nuovotesto "...una cosa del genere. ovviamente se revisioni non fosse vuoto, tale testo andrebbe accodato all'esistente.
    direi che è un bel po' complicato insomma!
    però riuscirci sarebbe davvero una bella sfida...

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    287
    si certamente si puo fare

    Puoi ad esempio crearti una tabella di LOG nella quale scrivi dopo l'update su altre tabelle.

    Ad esempio supponiamo che hai una tabella di Nome TabA.

    Fai un trigger in TabA che after update fa un insert nella tabella di log

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.