반응형
타임스탬프 열 업데이트 시 이상한 동작
다음과 같은 MariaDB-10.3.18 테이블이 있습니다.
create table switching_log
(
item_name varchar(20) NOT NULL,
switched_off timestamp,
switched_on timestamp
);
select * from switching_log;
+-----------+---------------------+---------------------+
| item_name | switched_off | switched_on |
+-----------+---------------------+---------------------+
| 201197010 | 2019-10-01 08:36:08 | 2019-10-01 08:35:49 |
+-----------+---------------------+---------------------+
'switched_off'를 업데이트해도 'switched_on'은 변경되지 않습니다.
UPDATE switching_log set switched_off = now() where item_name = '201197010';
select * from switching_log;
+-----------+---------------------+---------------------+
| item_name | switched_off | switched_on |
+-----------+---------------------+---------------------+
| 201197010 | 2019-10-01 08:40:28 | 2019-10-01 08:35:49 |
+-----------+---------------------+---------------------+
그러나 switched_on'을 업데이트하면 switched_off'도 업데이트 됩니다.
UPDATE switching_log set switched_on = now() where item_name = '201197010';
select * from switching_log;
+-----------+---------------------+---------------------+
| item_name | switched_off | switched_on |
+-----------+---------------------+---------------------+
| 201197010 | 2019-10-01 08:40:40 | 2019-10-01 08:40:40 |
+-----------+---------------------+---------------------+
이 동작은 설계상입니다.
MariaDB에는 특정 테이블의 TIMESTAMP 데이터 유형을 사용하는 첫 번째 열에 대한 특별한 동작이 있습니다.특정 테이블에서 TIMESTAMP 데이터 유형을 사용하는 첫 번째 열에 대해 MariaDB는 자동으로 다음 속성을 열에 할당합니다.
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
즉, INSERT 또는 UPDATE 쿼리에서 열이 명시적으로 값을 할당받지 않은 경우 MariaDB는 열의 값을 현재 날짜와 시간으로 자동으로 초기화합니다.
이 문제를 해결하려면 타임스탬프 열의 "자동 값" 기능을 비활성화하십시오.가장 단순하고 예측 가능한 접근법은 다음과 같습니다.
create table switching_log
(
item_name varchar(20) NOT NULL,
switched_off timestamp NULL,
switched_on timestamp NULL
);
언급URL : https://stackoverflow.com/questions/58181157/strange-behavior-when-updating-timestamp-column
반응형
'source' 카테고리의 다른 글
mysqldump: 쓰기 오류 번호 28이 표시됨 (0) | 2022.11.05 |
---|---|
Python: 목록에서 찾기 (0) | 2022.11.05 |
Vue 구성 요소가 레이블로 표시되지 않음 (0) | 2022.11.05 |
어레이 구문과 포인터 구문 및 코드 생성 비교 (0) | 2022.11.05 |
Java Array List - 두 목록이 동일한지, 순서는 중요하지 않은지 어떻게 알 수 있습니까? (0) | 2022.11.05 |