Aggiungere ed aggiornare automaticamente una colonna timestamp in MySql

Vorrei aggiungere ad una tabella MySql un campo (colonna) di tipo timestamp che riporti la 'data' in cui un record viene inserito o aggiornato, così da avere traccia del momento in cui è avvenuta l'ultima modifica, e far si che il timestamp si aggiorni in automatico, è possibile farlo? Grazie.

In Corso 4
MySql 13-07-2018 1 Risposta 4973 Visite +1
Paolo Cereschini

Paolo Cereschini

Autore di questa domanda

Risposte ( 1 approvate )

  1. Giorgio Borelli
    +1
    13-07-2018 12:17:07
    Rispondi

    Certo che puoi farlo, in MySql il timestamp rientra tra i tipi specializzati per la gestione del tempo e delle date, e non di rado viene appunto utilizzato per tenere traccia dell'inserimento o modifica di un record come nel tuo caso.

    Se la tua tabella è già esistente puoi usare ALTER per aggiungere il tuo campo timestamp, in questo modo:

    ALTER TABLE Your_Table ADD last_modified` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

    questa istruzione sql ti permette non solo di aggiungere la colonna 'last_modified' di tipo timestamp alla tua tabella ma anche che questo campo si aggiorni automaticamente (e non sia mai NULL) all'inserimento di un nuovo record o all'aggiornamento di esso, avendo così sempre il momento esatto di quando è avvenuto l'ultimo intervento su quel record.

    Il tipo timestamp in MySql è un formato per esprimere la data ed il tempo, di default (a meno di non specificare una lunghezza diversa) è AAAAMMDDOOMMSS che come si intuisce è composto da 14 cifre numeriche indicanti anno, mese, giorno, ora, minuti e secondi, sta poi a te sviluppatore/programmatore attraverso le opportune formattazioni di data di MySql o direttamente in linguaggio di programmazione tipo php visualizzarla nel formato data a te più congeniale.

     

    N.B. E' bene precisare che il formato timestamp parecchio usato nelle vecchie versioni di MySql è deprecato dalla versione 5.6 (se ricordo bene), e se ne sconsiglia fortemente l'uso a favore di DATETIME, pertanto ti consiglio di implementare lo stesso meccanismo di tracciamento della modifica dei records con il tipo DATETIME (puoi farlo benissimo) e tutt'al più utilizzare la funzione UNIX_TIMESTAMP(yuor_datetime) nelle tue SELECT per avere il valore data e tempo nel formato timestamp se magari non volessi cambiare la tua logica di programmazione incentrata su qu

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

 Domanda Precedente

 Elenco Domande 

Domanda Successiva