Столбец NOT-NULL типа TIMESTAMP без значения по умолчанию в MySQL

Столбец NOT-NULL типа TIMESTAMP без значения по умолчанию в MySQL

Если я создам таблицу

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;

createDateстолбец создается как

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

1) В чем логика этого? Почему MySQL добавляет значение по умолчанию? И почему он добавляет ON UPDATE CURRENT_TIMESTAMP(3)?

2) Можно ли создать столбец timestamp(3) NOT NULLбез значения по умолчанию?

ПРАВКА1:

У меня сложилось впечатление, что id, например, у столбца нет значения по умолчанию, потому что если я его задам,

insert t1 updateDate values (now());

я получил

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

поэтому значение по умолчанию не добавляется автоматически в столбец типа INT.

решение1

Прежде всего: каждый столбец имеет значение по умолчанию. Во многих случаях это значение по умолчанию NULL, но если оно объявлено, NOT NULLто, очевидно, должно быть что-то другое.

Для TIMESTAMPтипа данных значением по умолчанию является CURRENT_TIMESTAMP(), но, конечно, его можно перезаписать:

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

например, установит значение по умолчанию 0,0 AD

Связанный контент