생성 시 및 업데이트 시 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은 최근 에디션 mysql 5.6.25에서 2 TIMESTAMP를 서포트하고 있습니다.
나는 아래의 기술을 사용하여 가능하다고 생각한다.
`ts_create` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`ts_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
이전 버전의 MySql을 사용하고 있습니다.myqsl을 5.6.5 이상으로 업데이트하면 작동합니다.
테이블에는 CURRENT_TIMESTamp 기본값과 동일한 TIMESTamp 열을 2개 사용할 수 없습니다.다음 링크를 참조하십시오.http://www.mysqltutorial.org/mysql-timestamp.aspx
ts_create는 datetime(그래서 이름 변경 -> dt_create)으로 하고 ts_update만 타임스탬프로 하고 싶다고 생각합니다.이렇게 하면 한 번 설정하면 변경되지 않습니다.
datetime은 수동으로 제어되는 값을 위한 것으로 MySQL이 이를 유지한다는 점에서 타임스탬프는 조금 특별합니다.따라서 ts_create에는 datetime을 선택하는 것이 좋습니다.
ts_update에는 DEFAULT CURRENT_TIMESTamp가 필요 없습니다.이것이 비어 있으면 갱신되지 않기 때문에, 「마지막 갱신」은 ts_create입니다.
이것은 이전 버전에서의 Mysql의 작은 제한입니다.실제로 버전 5.6 이후, 복수의 타임스탬프가 기능합니다.
이거 드셔보세요ts_create
타임스탬프 디폴트 CURRENT_TIMESTamp_TIMESTamp,ts_update
업데이트 시 타임스탬프 기본 NULL_TIMESTamp
언급URL : https://stackoverflow.com/questions/4897002/mysql-current-timestamp-on-create-and-on-update
'programing' 카테고리의 다른 글
PHP 객체 vs 어레이 -- 반복 시 성능 비교 (0) | 2022.10.06 |
---|---|
64비트 OS에서 32비트 JVM의 최대 Java 힙 크기 (0) | 2022.10.06 |
HTML을 PHP 함수로 되돌리는 방법이 있습니까?(반환값을 문자열로 작성하지 않음) (0) | 2022.10.06 |
numpy.random.seed(0)의 역할은 무엇입니까? (0) | 2022.10.06 |
Vue router-link 완전 액티브클래스 (0) | 2022.10.06 |