MySQL에서 기본값이 없는 TIMESTAMP 유형의 NOT-NULL 열

MySQL에서 기본값이 없는 TIMESTAMP 유형의 NOT-NULL 열

내가 테이블을 만들면

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)?

timestamp(3) NOT NULL2) 기본값 없이 컬럼을 생성하는 것이 가능한가요 ?

편집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를 설정합니다.

관련 정보