작성 및 업데이트시 MySQL CURRENT_TIMESTAMP
다음과 같이 2 개의 TIMESTAMP 필드가있는 테이블을 정의하고 싶습니다.
CREATE TABLE `msgs` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`msg` VARCHAR(256),
`ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`ts_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
오류를 방지하는 방법 :
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
포인트의 원하는 동작 유지하는 것입니다 ts_create
및 ts_update
테이블 스키마를.
이것은 mySQL의 제한 사항이며 CURRENT_TIMESTAMP를 참조하는 기본값이있는 두 개의 TIMESTAMP 열을 가질 수 없습니다 . 이를 수행하는 유일한 방법은 불행히도 NOW ()의 기본값을 가질 수없는 ts_create에 DATETIME 유형을 사용하는 것입니다. 그래도 자신의 방아쇠를 굴려서 그렇게 할 수 있습니다.
이것이 오래된 게시물이라고 생각하지만 실제로 mysql은 최근 버전 mysql 5.6.25에서 2 TIMESTAMP를 지원한다고 생각합니다.
이전 MySql 버전을 사용하고 있습니다. myqsl을 5.6.5 이상으로 업데이트하면 작동합니다.
아래 기술을 사용하면 가능하다고 생각합니다
`ts_create` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`ts_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
테이블에 동일한 기본값 CURRENT_TIMESTAMP를 가진 두 개의 TIMESTAMP 열이있을 수 없습니다. 이 링크를 참조하십시오 : http://www.mysqltutorial.org/mysql-timestamp.aspx
나는 당신이 ts_create를 datetime으로 원한다고 생각하고 (이름 바꾸기-> dt_create) ts_update 만 타임 스탬프로 원합니까? 이렇게하면 일단 설정되면 변경되지 않습니다.
내 이해는 datetime은 수동으로 제어되는 값을위한 것이고 타임 스탬프는 MySQL이 당신을 위해 그것을 유지한다는 점에서 약간 "특별하다"는 것입니다. 이 경우 datetime은 ts_create에 대한 좋은 선택입니다.
ts_update에 DEFAULT CURRENT_TIMESTAMP가 필요하지 않다고 말하고 싶습니다. 비어 있으면 업데이트되지 않으므로 '마지막 업데이트'는 ts_create입니다.
이것은 실제로 버전 5.6 이상에서 여러 타임 스탬프가 작동 한 후 이전 버전에서 Mysql의 작은 제한 사항입니다.
이 ts_create
TIMESTAMP DEFAULT CURRENT_TIMESTAMP, ts_update
TIMESTAMP DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP를 시도해 볼 수 있습니다.
참고 URL : https://stackoverflow.com/questions/4897002/mysql-current-timestamp-on-create-and-on-update
'programing tip' 카테고리의 다른 글
Android 프레임 워크? (0) | 2020.11.21 |
---|---|
거의 정렬 된 배열 정렬 (k 이하로 잘못 배치 된 요소) (0) | 2020.11.21 |
Python : 선택적 함수 매개 변수가 설정되었는지 확인하는 방법 (0) | 2020.11.21 |
ES6 템플릿 리터럴이 문자열 연결보다 빠릅니까? (0) | 2020.11.21 |
Tensorflow에서 Poolallocator 메시지를 해석하는 방법은 무엇입니까? (0) | 2020.11.21 |