IT TIP

여러 TIMESTAMP 열이있는 하나의 Mysql 테이블

itqueen 2020. 12. 1. 20:21
반응형

여러 TIMESTAMP 열이있는 하나의 Mysql 테이블


두 개의 TIMESTAMP이있는 하나의 테이블을 갖고 싶습니다 . 레코드가 생성 된시기를 추적하는 열과 수정 된시기를 추적하는 열입니다. 이 값이 데이터베이스에서 처리되기를 원합니다. 내 앱 레이어가 그것에 대해 생각할 필요가 없습니다.

또는가있는 TIMESTAMP열이 있으면 다른 열을 가질 수 없다는 DEFAULT CURRENT_TIMESTAMP것을 ON UPDATE CURRENT_TIMESTAMP알고 있습니다 TIMESTAMP. 사용할 수는 DATETIME있지만 트리거 외부에서 기본값으로 사용할 수있는 방법은 없습니다.

레코드를 만들 때 또는 레코드가 생성 될 때 삽입 하여 각 열에 현재 타임 스탬프를 갖도록 함으로써 여러 TIMESTAMP가질 수 있음을 발견했습니다 . 그 시점부터 첫 번째 열이 자동으로 업데이트됩니다.DEFAULTON UPDATENULL

이것은 환상적으로 작동하지만 재미있는 느낌을 남깁니다. 이것은 버그 일 수 있으며 언제든지 패치 될 수 있습니다. 이것이 작동해야하는 방식이라면 그렇게해야합니다. 나는 기꺼이 내 길을 갈 것이다. 이것이 최선의 방법인지 아니면 트리거를 사용해야하는지 누구든지 말해 줄 수 있습니까?


MySQL 문서에 문서화되어 있습니다.

또한 NULL 값 을 허용하도록 NULL 속성으로 정의되지 않은 경우 TIMESTAMP 열에 NULL 값을 할당하여 현재 날짜 및 시간으로 초기화하거나 업데이트 할 수 있습니다 .

http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html


5.6.1 이전의 MySQL 버전은 TIMESTAMP기본값을 사용하지 않고 null을 허용하지 않는 한 동일한 테이블에 두 개의 열을 허용하지 않습니다 .

MySQL 5.6. +는 TIMESTAMP테이블에서 두 개 이상의 열을 허용 합니다.

더 여기 : http://shankargopal.blogspot.in/2013/03/mysql-566-timestamp-columns-and-default.html


MySQL은 동일한 테이블에서 둘 이상의 TIMESTAMP 열을 허용합니다. 다음 예를 확인하십시오.

CREATE TABLE t1 (
  ts1 TIMESTAMP DEFAULT 0,
  ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                ON UPDATE CURRENT_TIMESTAMP);
CREATE TABLE t2 (
  ts1 TIMESTAMP NULL,
  ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                ON UPDATE CURRENT_TIMESTAMP);
CREATE TABLE t3 (
  ts1 TIMESTAMP NULL DEFAULT 0,
  ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                ON UPDATE CURRENT_TIMESTAMP);

ts1 TIMESTAMP 열은 VALUE 0의 DEFAULT이고 ts2 TIMESTAMP 열은 CURRENT_TIMESTAMP 값의 DEFAULT입니다. 자세한 정보는 http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html

참고 URL : https://stackoverflow.com/questions/4851672/one-mysql-table-with-multiple-timestamp-columns

반응형