2009-07-29 4 views
2

Я использую MySQL (никто не совершенен), версия 4.1, и я используется для определения некоторых временных меток столбцов так:Определить значение по умолчанию даты в MySQL, похожий на отметку времени

ALTER TABLE foo ADD creation TIMESTAMP DEFAULT NOW() ; 

Я хотел бы делать то же самое, но для поля DATE. Причина в том, что мне не нужна точность TIMESTAMP, и поскольку в MySQL нет функционального индекса, я не могу быстро получить доступ к строкам с заданной датой (независимо от времени суток). Так что я попытался следующие, но это просто не работает:

ALTER TABLE foo ADD creation_date DATE DEFAULT CURDATE() ; 
ERROR 1067 (42000): Invalid default value for 'creation_date' 

или даже

ALTER TABLE foo ADD creation_date DATE DEFAULT DATE(NOW()) ; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(now())' at line 1 

Что не работает.

Любые идеи?

ответ

4

Значения по умолчанию в MySQL должны быть постоянными. Функции или выражения не допускаются.

Исключением является тип TIMESTAMP, для которого CURRENT_TIMESTAMP является допустимым постоянным значением по умолчанию.

See 4.1 manual: Data Type Default Values

+0

Hum, так что нет чистого раствора MySQL для 4.1? – jeje

+0

Установите дату, используя CURDATE(), когда вы ВСТАВЛЯЕТЕ ИЛИ ОБНОВЛЯЕТ строку. –

+0

Yep .. Решение на стороне клиента :( – jeje