Uma coluna NOT-NULL do tipo TIMESTAMP sem um valor padrão no MySQL

Uma coluna NOT-NULL do tipo TIMESTAMP sem um valor padrão no MySQL

Se eu criar uma tabela

CREATE TABLE t1 (
    id BIGINT UNSIGNED NOT NULL,
    createDate TIMESTAMP(3) NOT NULL,
    updateDate TIMESTAMP(3) NULL DEFAULT NULL,
    closeDate TIMESTAMP(3) NULL DEFAULT NULL,
    PRIMARY KEY (id)
)  ENGINE=INNODB;

createDatecoluna é criada como

`createDate` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),

1) Qual é a lógica por trás disso? Por que o MySQL adiciona o valor padrão? E por que acrescenta ON UPDATE CURRENT_TIMESTAMP(3)?

2) É possível criar uma coluna timestamp(3) NOT NULLsem o valor padrão?

EDITAR1:

Tenho a impressão de que ida coluna, por exemplo, não tem um valor padrão, porque se eu tiver

insert t1 updateDate values (now());

eu recebo

ERROR 1364 (HY000): Field 'id' doesn't have a default value

portanto, o valor padrão não é adicionado automaticamente a uma coluna do tipo INT.

Responder1

Primeiro de tudo: cada coluna possui um valor padrão. Em muitos casos, esse valor padrão é NULL, mas se for declarado NOT NULL, obviamente deverá ser outra coisa.

Com o TIMESTAMPtipo de dados, o valor padrão é CURRENT_TIMESTAMP(), mas é claro que isso pode ser substituído:

createDate TIMESTAMP(3) NOT NULL DEFAULT '0000-01-01 00:00:00'

por exemplo, definirá um valor padrão de 0,0 AD

informação relacionada