Consultando o manual ,
Para entrada de dados para uma coluna NOT NULL que não tenha uma cláusula DEFAULT explícita, se uma instrução INSERT ou REPLACE não inclui nenhum valor para a coluna, ou uma instrução UPDATE define a coluna como NULL, o MySQL trata a coluna de acordo com o modo SQL em vigor no momento:
- Se o modo SQL estrito não estiver ativado, o MySQL definirá a coluna com o valor padrão implícito para o tipo de dados da coluna.
- Se o modo estrito estiver ativado, ocorrerá um erro nas tabelas transacionais e a instrução será revertida. Para tabelas não transacionais, ocorre um
erro, mas se isso ocorrer na segunda linha ou na linha subsequente de uma instrução de várias linhas, as linhas anteriores terão sido inseridas.
Portanto, sua pergunta agora pode ser:quais são os valores padrão implícitos para os vários tipos de dados de coluna? Aqui você vai:
Os padrões implícitos são definidos da seguinte forma:
- Para tipos numéricos, o padrão é 0, com exceção de que para tipos inteiros ou de ponto flutuante declarados com o atributo AUTO_INCREMENT
, o padrão é o próximo valor na sequência.- Para tipos de data e hora diferentes de TIMESTAMP, o padrão é o valor “zero” apropriado para o tipo. Para a primeira coluna TIMESTAMP de uma tabela, o valor padrão é a data e hora atuais. Consulte a Seção 10.3, “Tipos de data e hora”.
- Para tipos de string diferentes de ENUM, o valor padrão é a string vazia. Para ENUM, o padrão é o primeiro valor de enumeração.