반응형
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
반응형
'MySql' 카테고리의 다른 글
MySQL PHP를 사용하여 mysql 테이블을 .txt 또는 .doc 파일로 내보내기 (0) | 2020.10.03 |
---|---|
MySQL 매우 간단한 사이트를위한 PHP 관리 백엔드 구축 (0) | 2020.10.03 |
MySQL 하나의 테이블에 두 개의 MySQL 타임 스탬프 열 (0) | 2020.10.03 |
MySQL 크론 작업을 사용한 일일 데이터베이스 백업 (0) | 2020.10.03 |
MySQL 데이터베이스 공급자 유형 당 허용되는 최대 매개 변수 수는 얼마입니까? (0) | 2020.10.03 |
댓글