Facendo riferimento al manuale ,
Per l'immissione di dati per una colonna NOT NULL che non ha una clausola DEFAULT esplicita, se un'istruzione INSERT o REPLACE non include alcun valore per la colonna o un'istruzione UPDATE imposta la colonna su NULL, MySQL gestisce la colonna in base alla modalità SQL in vigore al momento:
- Se la modalità SQL rigorosa non è abilitata, MySQL imposta la colonna sul valore predefinito implicito per il tipo di dati della colonna.
- Se la modalità rigorosa è abilitata, si verifica un errore per le tabelle transazionali e viene eseguito il rollback dell'istruzione. Per le tabelle non transazionali, si verifica un
errore, ma se ciò si verifica per la seconda riga o la successiva di un'istruzione a più righe, le righe precedenti saranno state inserite.
Quindi la tua domanda ora potrebbe essere:quali sono i valori predefiniti impliciti per i vari tipi di dati di colonna? Ecco a te:
Le impostazioni predefinite implicite sono definite come segue:
- Per i tipi numerici, il valore predefinito è 0, con l'eccezione che per i tipi interi oa virgola mobile dichiarati con l'attributo AUTO_INCREMENT
, il valore predefinito è il valore successivo nella sequenza. - Per tipi di data e ora diversi da TIMESTAMP, il valore predefinito è il valore "zero" appropriato per il tipo. Per la prima colonna TIMESTAMP di una tabella, il valore predefinito è la data e l'ora correnti. Vedere Sezione 10.3, "Tipi di data e ora".
- Per tipi di stringa diversi da ENUM, il valore predefinito è la stringa vuota. Per ENUM, il valore predefinito è il primo valore di enumerazione.