2010-09-09 9 views
0

Я поднял вопрос об этом некоторое время назад, но у меня все еще есть проблема. У меня есть база данных mysql5 с таблицей продаж, которая содержит временную метку для представления продажи. Если поле в таблице продаж изменило или изменило временную отметку на текущее время (время изменения). Чтобы предотвратить это, я не выбрал параметр on_update_select_current_timestamp, но все же временная метка изменилась?mysql timestamp update при изменении записи

Вот как поле выглядит в PHPMyAdmin

alt text

Кто-нибудь есть какие-либо идеи, что я должен сделать, отключив опцию CURRENT_TIMESTAMP кажется сбросить on_update_select_current_timestamp триггер

+0

Я знаю, что это было задано давно, но мое решение состояло в том, чтобы установить значение по умолчанию равным null и не обновлять его с помощью current_timestamp. Таким образом, он не был обновлен и не повлиял на мои предыдущие данные. В phpmyadmin (4.2.11) вы делаете это, установив флажок null. – GreeKatrina

ответ

0

, если вы не хотите это поле должно быть обновлено автоматически, просто не используйте поле типа метки времени вообще
Используйте вместо этого datetime.

+0

Немного глупого вопроса здесь, но ... Моя база данных имеет тысячи записей, если я изменяю таблицу базы данных так, что поле timestamp - это дата и время, это испортит мой сайт, например, мои вставки sql не будут работать, продажи время не будет отформатировано правильно? –

+0

@ Майк, да, это немного глупый вопрос. Вы также должны изменить свой код. Мой ответ был не о вашем устаревшем коде и о том, как иметь дело с глупыми недостатками дизайна. Но только о дизайне базы данных, как правильно использовать ваш инструмент. Последствия для устаревшего кода - другое дело. Хотя нет ничего плохого в перезаписи кода. Он называется рефакторинг, и это часть вашей работы. –

+0

однако вам повезло, потому что в mysql5 timestamp имеет тот же формат, что и datetime, afaik –

0

Проверьте определения таблиц, если опция CURRENT-TIMESTAMP действительно отключена.

Если его отключен, он должен выглядеть ...

CREATE TABLE `sometable` (
    ...somefields... 
    `Sale_Time` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' INT(11) DEFAULT NULL, 
    ...somefields... 
) ENGINE=someengine 

... иначе CURRENT-TIMESTAMP будет видна в этой линии. Когда он отключен, он не обновляется при обновлении, если какая-либо другая функция базы данных (триггер или такая) не изменяет ее при обновлении полей.

Смежные вопросы