답변:
로부터 MySQL을 5.5 수동 :
날짜 열의 기본값을 NOW () 또는 CURRENT_DATE와 같은 함수의 값으로 설정할 수 없습니다. 단, CURRENT_TIMESTAMP를 TIMESTAMP 열의 기본값으로 지정할 수 있습니다.
따라서 TIMESTAMP
열 대신 열 을 추가하면 달성하려는 것이 MySQL 5.5에서 작동 DATE
합니다.
기능을 허용하는 5.6.x의 변경 사항은 여기 에 설명되어 있으며 , 완전성을 위해 관련 요약을 인용하겠습니다.
MySQL 5.6.5부터 TIMESTAMP 및 DATETIME 열은 자동으로 초기화되어 현재 날짜 및 시간 (즉, 현재 타임 스탬프)으로 업데이트 될 수 있습니다. 5.6.5 이전에는 TIMESTAMP 및 테이블 당 최대 하나의 TIMESTAMP 열에 대해서만 적용됩니다.
이 답변을 확인하십시오 .
옵션은 다음과 같습니다.
다음과 같이 열 유형을 TIMESTAMP로 변경하십시오.
ALTER TABLE `downloads` ADD `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
열을 자동으로 업데이트하는 트리거를 작성하십시오.
ALTER TABLE `downloads` ADD `date` DATETIME NULL; -- date must allow
-- NULLs or default
-- to a special value
DROP TRIGGER IF EXISTS downloads_BI;
DELIMITER //
CREATE TRIGGER downloads_BI
BEFORE INSERT ON downloads FOR EACH ROW
BEGIN
IF (NEW.date IS NULL) THEN -- change the isnull check for the default used
SET NEW.date = now();
END IF;
END//
DELIMITER ;
업데이트시 업데이트를 자동으로 업데이트해야하거나 null 값을 방지하려는 경우 업데이트 값도 만들 수 있습니다.
mysql> INSERT INTO downloads (i) VALUES (1); -- I do not set date
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM downloads;
+------+---------------------+
| i | date |
+------+---------------------+
| 1 | 2016-03-22 09:27:52 |
+------+---------------------+
1 row in set (0.00 sec)