Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 CURRENT_TIMESTAMP 기본값을 가진 TIMESTAMP 컬럼에 빈 값을 삽입하면 어떻게 될까?

INSERT 문에서 해당 컬럼에 아무 값도 지정하지 않으면, TIMESTAMP 타입 컬럼에는 현재 날짜와 시간이 자동으로 삽입됩니다. 이는 컬럼 정의 시 DEFAULT CURRENT_TIMESTAMP 옵션이 설정되어 있기 때문입니다.

테이블 생성하기

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
    -> (
    -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserLoginDate timestamp default current_timestamp
    -> );
Query OK, 0 rows affected (0.61 sec)

위 테이블에서 UserLoginDate 컬럼은 TIMESTAMP 타입이며, 기본값으로 CURRENT_TIMESTAMP가 설정되어 있습니다.

빈 값 삽입하기

이제 INSERT 명령어를 사용하여 값을 지정하지 않은 채 레코드를 삽입해 보겠습니다.

mysql> insert into DemoTable values();
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable(UserId) values(null);
Query OK, 1 row affected (0.13 sec)

결과 확인하기

SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------+---------------------+
| UserId | UserLoginDate |
+--------+---------------------+
| 1 | 2019-11-03 12:55:44 |
| 2 | 2019-11-03 12:55:45 |
| 3 | 2019-11-03 12:55:46 |
| 4 | 2019-11-03 12:56:06 |
+--------+---------------------+
4 rows in set (0.00 sec)

결과 분석

출력 결과를 보면, INSERT 문에서 날짜 정보를 전혀 제공하지 않았음에도 불구하고 UserLoginDate 컬럼에 각 레코드가 삽입된 순간의 현재 날짜와 시간이 자동으로 기록된 것을 확인할 수 있습니다.

이처럼 MySQL에서는 TIMESTAMP 컬럼에 DEFAULT CURRENT_TIMESTAMP를 설정해 두면, 별도의 값을 지정하지 않아도 데이터가 삽입되는 시점의 타임스탬프가 자동으로 저장됩니다. 로그인 시간, 생성 일시 등 레코드 생성 시점을 추적해야 하는 경우 매우 유용하게 활용할 수 있습니다.