Mysql
 sql >> Database >  >> RDS >> Mysql

Il tipo di colonna MySQL TIMESTAMP include implicitamente NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

In MySQL 5.6.5 ci sono diversi aggiornamenti riguardanti questa inizializzazione, puoi vedere su questo collegamento (Proprietà del timestamp automatico prima di MySQL 5.6.5).

Se stai usando MySQL <=5.6.5 , per ignorare questa inizializzazione è necessario impostare il valore DEFAULT su 0 o NULL con NULL consentito.

CREATE TABLE tbl
(
    field1 TIMESTAMP DEFAULT 0,
    field2 TIMESTAMP NULL DEFAULT NULL
)

Se stai usando MySQL>=5.6.6 , esiste un parametro chiamato explicit_defaults_for_timestamp che è disabilitato per impostazione predefinita. Puoi abilitare questa impostazione o impostare il valore DEFAULT su 0 o NULL, stesso approccio per le versioni precedenti di MySQL.

Se stai usando MySQL>=8.0.2 , quindi explicit_defaults_for_timestamp è abilitato per impostazione predefinita. Questo disabilita il comportamento non standard (per fortuna). Inoltre, MySQL genera un avviso quando si disabilita questa impostazione. Quindi, ad esempio, se non definisci il valore DEFAULT per un TIMESTAMP colonna, viene automaticamente impostato su NULL .