mysql에서 타임스탬프 데이터 유형은 업데이트할 프로그램을 사용하지 않고도 기록 타임스탬프를 업데이트하면 자동으로 시간을 업데이트할 수 있습니다.
일반적으로 테이블에 생성 날짜가 있습니다. 날짜 필드의 경우 다른 데이터베이스에는 기본값 옵션이 있습니다. MySQL에도 기본 값인 타임스탬프가 있는데, MySQL에서는 삽입뿐만 아니라 수정을 해도 타임스탬프 값이 업데이트됩니다!
이런 경우에는 더 이상 생성일이 아닌 업데이트 날짜로 활용하시는 것이 좋습니다!
그러므로 MySQL에 생성일을 기록하려면 datetime을 사용한 후 NOW() 함수를 사용하여 완료해야 합니다!
1, TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
새 레코드를 생성하고 기존 레코드를 수정할 때 이 데이터 열을 새로 고칩니다.
2, 새 레코드를 생성할 때 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
필드는 현재 시간으로 설정됩니다. 그러나 나중에 수정되면 더 이상 새로 고쳐지지 않습니다.
3, TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 새 레코드를 생성할 때 이 필드를 0으로 설정
, 자동으로 현재 시간으로 업데이트 및 삽입:
테이블:
---------
테이블 테이블 생성
- -- --- ------------- CREATE TABLE `t1` ( `p_c` int(11) NOT NULL, `p_time` 타임스탬프 NOT CURRENT_TIMESTAMP 업데이트 시 NULL 기본 CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
데이터:
1 2007-10-08 11:53:35
2 2007-10-08 11:54:00
t1(p_c)에 삽입 3 선택; t1 설정 p_c = 2 업데이트 여기서 p_c = 2;
데이터:
1 2007-10-08 11:53:35
2 2007-10-08 12: 00:37
3 2007-10-08 12:00:37
2. 현재 시간에 자동으로 INSERT되지만 자동으로 UPDATE되지는 않습니다.
테이블:
--------------------
테이블 테이블 만들기
------------------------------------
테이블 생성 `t1` ( `p_c` int( 11) NOT NULL, `p_time` 타임스탬프 NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
Data:
insert into t1(p_c) select 4;update t1 set p_c = 3 where p_c = 3;
1 2007-10-08 11:53:35
2 2007-10-08 12:00:37
3 2007-10-08 12:00:37
4 2007-10-08 12:05 :19
3. 테이블에는 기본값이 현재 시간인 두 개의 필드가 있을 수 없습니다. 그렇지 않으면 오류가 발생합니다. 하지만 다른 사람들은 괜찮습니다.
테이블:
--------------------
테이블 테이블 만들기
------ -------------- 테이블 생성 `t1` ( `p_c` int(11) NOT NULL, ` p_time ` 타임스탬프 NOT NULL DEFAULT CURRENT_TIMESTAMP, `p_timew2` 타임스탬프 NOT NULL DEFAULT '0000-00-00 00:00:00' ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
데이터:
1 2007-10-08 11 : 53:35 0000-00-00 00:00:00
2 2007-10-08 12:00:37 0000-00-00 00:00:00
3 2007-10-08 12:00 : 37 0000-00-00 00:00:00
4 2007-10-08 12:05:19 0000-00-00 00:00:00
비교하면 내 진술에는 "업데이트 중"이 적습니다. CURRENT_TIMESTAMP' 또는 '기본 CURRENT_TIMESTAMP'. 이런 방식으로 타임스탬프 필드는 데이터가 삽입되는 시간만 설정하고 업데이트될 때 변경되지 않습니다. 물론, 단지 이 목표를 달성하려는 경우에는 중요하지 않습니다. 1: 정의 시 DEFAULT CURRENT_TIMESTAMP 및 ON UPDATE CURRENT_TIMESTAMP 절을 모두 정의한 경우 열 값은 기본적으로 현재 타임스탬프를 사용하며 자동으로 업데이트됩니다.
2: DEFAULT 또는 ON UPDATE 절을 사용하지 않으면 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP와 동일합니다.
3: DEFAULT CURRENT_TIMESTAMP 절만 있고 ON UPDATE 절이 없는 경우 열 값은 기본적으로 현재 타임스탬프로 설정되지만 자동으로 업데이트되지 않습니다.
4: DEFAULT 절을 사용하지 않지만 ON UPDATE CURRENT_TIMESTAMP 절이 있는 경우 열의 기본값은 0으로 설정되고 자동으로 업데이트됩니다.
5: 상수 값 DEFAULT가 있는 경우 열은 기본값을 가지며 현재 타임스탬프로 자동 초기화되지 않습니다. 열에 ON UPDATE CURRENT_TIMESTAMP 절도 있으면 이 타임스탬프가 자동으로 업데이트됩니다. 그렇지 않으면 열에 기본 상수가 있지만 자동으로 업데이트되지 않습니다.
즉, 현재 타임스탬프를 사용하여 값을 초기화하고 자동 업데이트하거나 둘 중 하나를 수행하거나 둘 다 수행하지 않을 수 있습니다. (예를 들어 정의할 때 자동 업데이트를 지정할 수 있지만 초기화는 할 수 없습니다.) 다음 필드 정의는 이러한 상황을 보여줍니다.
위는 MySQL 데이터베이스의 타임스탬프 자동 업데이트 시간 방법의 내용입니다. 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!