본문 바로가기
MySql

MySQL, phpMyAdmin : TIMESTAMP는 항상 NOW 함수를 실행합니다.

by 베이스 공부 2020. 10. 3.
반응형

TIMESTAMPS에 매우 짜증나는 일이 있습니다 ...

내 테이블에 "createdat", "deletedat"및 "updatedat"열이 있습니다. 내 deleteat를 설정하고에서 NULL 및 DEFAULT NULL로 업데이트했습니다. 그러나 새 레코드가 추가되면 NOW ( ) 함수는 NULL로 두지 않고 deleteat 및 updatedat에 대해 항상 실행됩니다.

그래서 저는 다음으로 끝납니다 : 00:00:00 ...

기본적으로 NULL이 아닌 이유는 무엇입니까?

내 테이블은 다음과 같습니다. 여기에 이미지 설명 입력

다음은 삽입 할 때입니다 (NOW 기능이 선택되어 있음에 유의하십시오). 여기에 이미지 설명 입력

다음 SQL이 실행됩니다.

INSERT INTO `MYTABLE_DEV`.`messages` (`id`, `fromUserId`, `toUserId`, `subject`, `body`, `createdat`, `updatedat`, `deletedat`) VALUES (NULL, '1', '3', 'Message', 'This is another message.', CURRENT_TIMESTAMP, NOW(), NOW());

 

해결 방법

 

이것은 예상되는 동작입니다.

다른 데이터베이스와 달리 MySQL에서 TIMESTAMP 열은 행이 업데이트 될 때마다 now () 항상 업데이트됩니다. 이것은 TIMESTAMP 데이터 유형의 의도적 인 기능입니다.

편집 : 여기서는 TIMESTAMP 에 대해 이야기하고 있으며 TIMESTAMP DEFAULT NULL 또는 다른 변형이 아닙니다 .

원하는 것은 DATETIME 데이터 유형이며 일반 열처럼 작동합니다.

다음은 동작을 보여주는 테스트 SQL입니다.

create table timestamp_datatype (id int, dt datetime, ts timestamp);
-- test 1: leaving ts to default - you get now()
insert into timestamp_datatype (id, dt) values (1, '2011-01-01 01:01:01'); 
-- test 2: trying to give ts a value - this works
insert into timestamp_datatype (id, dt, ts) values (2, '2011-01-01 01:01:01', '2011-01-01 01:01:01');
-- test 3: specifying null for ts - this doesn't work - you get now()
insert into timestamp_datatype (id, dt, ts) values (3, '2011-01-01 01:01:01', null);
-- test 4: updating the row - ts is updated too
insert into timestamp_datatype (id, dt, ts) values (4, '2011-01-01 01:01:01', '2011-01-01 01:01:01');
update timestamp_datatype set dt = now() where id = 4; -- ts is updated to now()
select * from timestamp_datatype;
+------+---------------------+---------------------+
| id   | dt                  | ts                  |
+------+---------------------+---------------------+
|    1 | 2011-01-01 01:01:01 | 2011-07-05 09:50:24 |
|    2 | 2011-01-01 01:01:01 | 2011-01-01 01:01:01 |
|    3 | 2011-01-01 01:01:01 | 2011-07-05 09:50:24 |
|    4 | 2011-07-05 09:50:24 | 2011-07-05 09:50:24 |
+------+---------------------+---------------------+

 

참조 페이지 https://stackoverflow.com/questions/6576604

 

 

반응형

댓글