내가 테이블을 만들면
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 NULL
2) 기본값 없이 컬럼을 생성하는 것이 가능한가요 ?
편집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를 설정합니다.