Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL의 기존 열에서 ON UPDATE CURRENT_TIMESTAMP를 어떻게 제거합니까?

<시간/>

ON UPDATE CURRENT_TIMESTAMP는 명시적 타임스탬프가 없는 업데이트로 인해 현재 타임스탬프 값이 업데이트됨을 정의합니다.

ALTER 명령을 사용하여 열에서 ON UPDATE CURRENT_TIMESTAMP를 제거할 수 있습니다.

구문은 다음과 같습니다.

ALTER TABLE yourTableName
CHANGE yourTimeStampColumnName yourTimeStampColumnName timestamp NOT
NULL default CURRENT_TIMESTAMP;

위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table removeOnUpdateCurrentTimeStampDemo
   - > (
   - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   - > Name varchar(20),
   - > UserUpdateTimestamp timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
   - > );
Query OK, 0 rows affected (0.54 sec)

DESC 명령을 사용하여 테이블의 설명을 확인하십시오.

쿼리는 다음과 같습니다

mysql> desc removeOnUpdateCurrentTimeStampDemo;

다음은 출력입니다.

+---------------------+-------------+------+-----+-------------------+-----------------------------+
| Field               | Type        | Null | Key | Default           | Extra                       |
+---------------------+-------------+------+-----+-------------------+-----------------------------+
| Id                  | int(11)     | NO   | PRI | NULL              | auto_increment              |
| Name                | varchar(20) | YES  |     | NULL              |                             |
| UserUpdateTimestamp | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+---------------------+-------------+------+-----+-------------------+-----------------------------+
3 rows in set (0.04 sec)

이제 CURRENT_TIMESTAMP 업데이트에 있는 Extra 필드를 살펴보십시오. ON UPDATE CURRENT_TIMESTAMP를 제거하는 쿼리는 다음과 같습니다.

mysql> alter table removeOnUpdateCurrentTimeStampDemo
   - > change UserUpdateTimestamp UserUpdateTimestamp timestamp NOT NULL default CURRENT_TIMESTAMP;
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

표의 설명을 다시 한 번 확인하세요.

쿼리는 다음과 같습니다

mysql> desc removeOnUpdateCurrentTimeStampDemo;

다음은 출력입니다.

+---------------------+-------------+------+-----+-------------------+----------------+
| Field               | Type        | Null | Key | Default           | Extra          |
+---------------------+-------------+------+-----+-------------------+----------------+
| Id                  | int(11)     | NO   | PRI | NULL              | auto_increment |
| Name                | varchar(20) | YES  |     | NULL              |                |
| UserUpdateTimestamp | timestamp   | NO   |     | CURRENT_TIMESTAMP |                |
+---------------------+-------------+------+-----+-------------------+----------------+
3 rows in set (0.00 sec)

기본 CURRENT_TIMESTAMP를 제거하려는 경우 쿼리는 다음과 같습니다.

mysql> alter table removeOnUpdateCurrentTimeStampDemo
   - > change UserUpdateTimestamp UserUpdateTimestamp timestamp NOT NULL;
Query OK, 0 rows affected (0.12 sec)
Records: 0 Duplicates: 0 Warnings: 0

표의 설명을 다시 한 번 확인하세요.

쿼리는 다음과 같습니다

mysql> desc removeOnUpdateCurrentTimeStampDemo;

다음은 출력입니다.

+---------------------+-------------+------+-----+---------+----------------+
| Field               | Type        | Null | Key | Default | Extra          |
+---------------------+-------------+------+-----+---------+----------------+
| Id                  | int(11)     | NO   | PRI | NULL    | auto_increment |
| Name                | varchar(20) | YES  |     | NULL    |                |
| UserUpdateTimestamp | timestamp   | NO   |     | NULL    |                |
+---------------------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

이제 위의 샘플 출력을 보면 ON UPDATE CURRENT TIMESTAMP가 제거되었습니다.