Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro de data e hora DEFAULT CURRENT_TIMESTAMP do MySQL


O DEFAULT CURRENT_TIMESTAMP suporte para um DATETIME (tipo de dados) foi adicionado no MySQL 5.6.

Nas versões 5.5 e anteriores, isso se aplicava apenas a TIMESTAMP (tipo de dados) colunas.

É possível usar um BEFORE INSERT trigger em 5.5 para atribuir um valor padrão a uma coluna.
 DELIMITER $$

 CREATE TRIGGER ...
 BEFORE INSERT ON mytable
 FOR EACH ROW
 BEGIN
    IF NEW.mycol IS NULL THEN
       SET NEW.mycol = NOW();
    END IF;
 END$$

A distinção entre maiúsculas e minúsculas (de consultas em relação a valores armazenados em colunas) se deve ao collation usado para a coluna. Agrupamentos que terminam em _ci não diferenciam maiúsculas de minúsculas. Por exemplo latin1_swedish_ci não diferencia maiúsculas de minúsculas, mas latin1_general_cs diferencia maiúsculas de minúsculas.

A saída de SHOW CREATE TABLE foo mostrará o conjunto de caracteres e o agrupamento para as colunas de tipo de caractere. Isso é especificado em um nível por coluna. O "padrão" especificado no nível da tabela se aplica a novas colunas adicionadas à tabela quando a nova definição de coluna não especifica um conjunto de caracteres.


ATUALIZAÇÃO

Kaii apontou que minha resposta sobre "sensibilidade a maiúsculas e minúsculas" lida com valores armazenados em colunas e se as consultas retornarão um valor de uma coluna contendo um valor de "New" será retornado com um predicado como "t.col = 'new'" .

Veja a resposta de Kaii sobre identificadores (por exemplo, nomes de tabelas) sendo manipulados de forma diferente (por padrão) no Windows e no Linux.