Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570

    [MySQL] Creando la tabella viene alterato un campo TIMESTAMP

    ok, non è esattamente un problema, quanto più una cosa che non capisco.

    Lanciando il seguente comando SQL sul mio database
    mi crea la tabella correttamente

    codice:
    CREATE TABLE test
    (
    id BIGINT AUTO_INCREMENT,
    activation_time TIMESTAMP,
    last_login TIMESTAMP,
    ban TIMESTAMP,
    PRIMARY KEY (id)
    ) ENGINE=InnoDB CHARACTER SET=latin1
    tuttavia quando poi controllo la tabella creata il campo activation_time ha settato come default "CURRENT_TIMESTAMP" e come extra "on update CURRENT_TIMESTAMP"
    mentre gli altri campi timestamp non subiscono cambiamenti di sorta.

    ho risolto il problema specificando il valore di default di activation_time

    codice:
    CREATE TABLE test2
    (
    id BIGINT AUTO_INCREMENT,
    activation_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
    last_login TIMESTAMP,
    ban TIMESTAMP,
    PRIMARY KEY (id)
    ) ENGINE=InnoDB CHARACTER SET=latin1
    ma trovo davvero ridicolo doverlo fare.

    a cosa è dovuto l'"errore"?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non c'è nessun errore.

    Se vuoi che il campo non sia soggetto ad aggiornamenti ti basta usare un campo di tipo datetime anzichè timestamp.

    Sul manuale è riportato chiaramente il comportamento del timestamp.

    http://dev.mysql.com/doc/refman/5.0/en/timestamp.html

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    ma allora come mai gli altri campi timestamp non hanno come default CURRENT_TIMESTAMP ? o.o

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da nickcv
    ma allora come mai gli altri campi timestamp non hanno come default CURRENT_TIMESTAMP ? o.o
    Basta prendersi la briga di leggere.

    For one TIMESTAMP column in a table, you can assign the current timestamp as the default value and the auto-update value.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    quindi in sostanza visto che solo per una colonna timestamp all'interno della tabella è possibile assegnare un CURRENT_TIMESTAMP non ha senso avere più di un campo timestamp per tabella, corretto?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da nickcv
    quindi in sostanza visto che solo per una colonna timestamp all'interno della tabella è possibile assegnare un CURRENT_TIMESTAMP non ha senso avere più di un campo timestamp per tabella, corretto?
    tutto può avere senso oppure no, puoi sempre fare un DATETIME e "clonare" il TIMESTAMP con un trigger.
    Non è chiarissimo il motivo per cui fare ciò, magari in certe situazioni ha un suo senso

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.