테이블 최근 수정일, 갱신일 확인

 

이번에는 테이블 마지막 업데이트 시간을 알고 싶을때 사용하는 방법에 대해 알아보겠습니다.


주의사항

 

MySQL 5.7버전 이하에는 InnoDB에 버그가 있어 정상적으로 UPDATE_TIME을 불러올수 없는 이슈가 있습니다.

또한 서버가 다시 시작되거나 테이블이 InnoDB 데이터 사전 캐시에서 제거되면 타임스탬프가 유지되지 않아 정상적으로 사용할 수 없습니다.

 

그래서 방법3에 직접 시간을 관리하는 방법도 같이 서술해놓겠습니다.


방법1. SHOW TABLE STATUS

 

SHOW TABLE STATUS LIKE '테이블명';
+------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| Name       | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation          | Checksum | Create_options | Comment |
+------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| test       | InnoDB |      10 | Dynamic    |    1 |          16384 |       16384 |               0 |            0 |         0 |           NULL | 2024-03-27 09:38:55 | 2024-03-27 09:39:05 | NULL       | utf8mb4_unicode_ci |     NULL |                |         |
+------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+

 


방법2. INFORMATION_SCHEMA.TABLES

 

DB명과 테이블명으로 확인

SELECT UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DB명'
	AND TABLE_NAME = '테이블명';
+---------------------+
| UPDATE_TIME         |
+---------------------+
| 2024-03-27 09:39:05 |
+---------------------+

 

테이블명으로 확인

SELECT UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME='테이블명';
+---------------------+
| UPDATE_TIME         |
+---------------------+
| 2024-03-27 09:39:05 |
+---------------------+

방법3. 직접 업데이트 시간 관리하기

 

CREATE TABLE test (
	id INT PRIMARY KEY,
	name CHAR(4),
	update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
			ON UPDATE CURRENT_TIMESTAMP,
	KEY (update_time)
);

 

테스트 테이블 test가 생성하겠습니다.

test에는 id와 name, 업데이트 시간을 관리하는 update_time 컬럼이 있습니다.

 

INSERT INTO test(id, update_time) VALUES (1, NOW());

SELECT * FROM test;
+----+------+---------------------+
| id | name | update_time         |
+----+------+---------------------+
|  1 | NULL | 2024-03-28 09:47:24 |
+----+------+---------------------+

 

위와같이 데이터를 넣으며 update_time을 관리해줍니다.

 

UPDATE test SET name = 'test' WHERE id = 1;

SELECT * FROM test;
+----+------+---------------------+
| id | name | update_time         |
+----+------+---------------------+
|  1 | test | 2024-03-28 09:50:22 |
+----+------+---------------------+

  

UPDATE를 하면 자동으로 update_time이 갱신됩니다.

 

SELECT MAX(update_time) FROM test;
+---------------------+
| MAX(update_time)    |
+---------------------+
| 2024-03-28 09:50:22 |
+---------------------+

 

테이블의 마지막 업데이트 시간을 보고싶으면 MAX 함수를 사용하여 확인할 수 있습니다.


마무리

 

잘못된 점이 있거나 궁금한 점이 있다면 언제든지 문의해주시기 바랍니다!

728x90
반응형

+ Recent posts