Nie można ustawić wartości domyślnej dla kolumny daty na wartość funkcji, takiej jak NOW () lub CURRENT_DATE. Wyjątkiem jest to, że możesz określić CURRENT_TIMESTAMP jako domyślny dla kolumny TIMESTAMP.
Dlatego to, co chcesz osiągnąć, zadziała w MySQL 5.5, jeśli dodasz TIMESTAMPkolumnę zamiast DATEkolumny.
Zmiany w 5.6.x, które pozwalają na funkcjonalność, są tutaj udokumentowane , a dla kompletności podam odpowiednie podsumowanie:
Począwszy od MySQL 5.6.5, kolumny TIMESTAMP i DATETIME mogą być automatycznie inicjowane i aktualizowane do bieżącej daty i godziny (tj. Bieżącego znacznika czasu). Przed 5.6.5 dotyczy to tylko TIMESTAMP i co najwyżej jednej kolumny TIMESTAMP na tabelę.
Utwórz SPUST, który automatycznie aktualizuje kolumnę:
ALTERTABLE`downloads`ADD`date` DATETIME NULL;-- date must allow-- NULLs or default-- to a special valueDROPTRIGGERIFEXISTS downloads_BI;
DELIMITER //CREATETRIGGER downloads_BI
BEFORE INSERTON downloads FOR EACH ROWBEGINIF(NEW.date ISNULL)THEN-- change the isnull check for the default usedSET NEW.date = now();ENDIF;END//
DELIMITER ;
Możesz także utworzyć wartość aktualizacji, jeśli musi ona być automatycznie aktualizowana podczas aktualizacji lub chcesz zapobiec wartościom pustym.
mysql>INSERTINTO downloads (i)VALUES(1);-- I do not set date
Query OK,1row affected (0.00 sec)
mysql>SELECT*FROM downloads;+------+---------------------+| i | date |+------+---------------------+|1|2016-03-2209:27:52|+------+---------------------+1rowinset(0.00 sec)
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.