Автоматическое обновление метки времени MySQL - PullRequest
1 голос
/ 27 июля 2011

У меня есть таблица, содержащая пару полей меток времени, но у меня возникают некоторые проблемы, когда некоторые поля по умолчанию имеют значение NULL.

В моей таблице users у меня есть следующие таблицы отметок времени:

(field),(NULL),(default val)

deleted_on YES NULL
last_change_attemp YES NULL
newpass_time YES NULL
last_login YES NULL
created NO 0000-00-00 00:00:00
updates YES NULL

Когда я редактирую строку в phpMyAdmin, в редактируемой строке уже установлен флажок NULL для всех полей NULL, кроме первого поля: * Удален_он *. Если я вручную установлю флажок, это позволит мне сохранить это поле как NULL.

Когда я обновляю другое поле с помощью запроса, он автоматически выполняет отметку current_timestamp для этого первого поля. Это ожидается?

Ответы [ 2 ]

3 голосов
/ 27 июля 2011

Я снова прочитал документы и заметил этот фрагмент текста

Для указания автоматического значения по умолчанию или обновления для столбца TIMESTAMP, другого чем первый, вы должны подавить автоматическую инициализацию и обновить поведение для первого столбца TIMESTAMP явно присвоение ему постоянного значения DEFAULT (например, DEFAULT 0 или ПО УМОЛЧАНИЮ '2003-01-01 00:00:00'). Затем для другого столбца TIMESTAMP правила те же, что и для первого столбца TIMESTAMP, за исключением того, что если вы пропустите оба предложения DEFAULT и ON UPDATE, автоматическое отключение происходит инициализация или обновление.

http://dev.mysql.com/doc/refman/5.0/en/timestamp.html

Так что на данный момент у меня есть поля по умолчанию для 0000-00-00 00:00:00, чтобы предотвратить автоматическое обновление.

0 голосов
/ 27 июля 2011

phpMyAdmin делает некоторые странные вещи с временными метками и нулем, особенно если столбец помечен как CURRENT_TIMESTAMP

Не знаю почему.

...