2011-02-03 2 views
0

Можно ли установить поле в Timestamp, но не изменить его при обновлении до текущей метки времени?Поле Timestamp MySQL

Я пытаюсь сделать это с помощью PhpMyAdmin и это не позволяет мне удалить по умолчанию on update CURRENT_TIMESTAMP

Смотрите этот вопрос и ответ: Support user time zones

Я пытаюсь использовать TIMESTAMP как это позволит мне легко поиграть с часовыми поясами.

Невозможно сохранить данные в этом поле без изменений при обновлении той же строки?

ответ

1

Это поведение TIMESTAMP. Это может сбить с толку. Прочтите this, чтобы проработать его. В качестве альтернативы рассмотрим использование DATETIME.

+0

См. Мое последнее обновление. спасибо –

0

Используйте интерфейс командной строки. Похоже, вы должны указать атрибут «DEFAULT CURRENT_TIMESTAMP» для создания таблицы, чтобы получить это поведение. documentation here.

1

Сервер допускает любую комбинацию DEFAULT и ON UPDATE, если phpMyAdmin не позволяет вам установить его, то это может быть ошибка в phpMyAdmin. Во всяком случае, важно отметить, что столбцы timestamp обрабатываются специально в mysql, поэтому, если у вас более одного типа этого типа в вашей таблице, вполне возможно, что он не будет работать так, как вы ожидаете.

От mysql docs:

В Создании заявлении TABLE, первый столбец TIMESTAMP могут быть объявлены в любой из следующих способов:

  • с обоими DEFAULT CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP положений, столбец имеет текущую временную метку для значения по умолчанию и автоматически обновляется.
  • Без предложений DEFAULT или ON UPDATE это то же самое, что DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.
  • С предложением DEFAULT CURRENT_TIMESTAMP и предложением ON UPDATE столбец имеет текущую временную метку для значения по умолчанию, но не обновляется автоматически.
  • Без предложения DEFAULT и с предложением ON UPDATE CURRENT_TIMESTAMP столбец имеет значение по умолчанию 0 и автоматически обновляется.
+0

У меня есть два, почему это проблема? –

+0

Это не проблема *, поскольку в «не будет работать», но столбцы TIMESTAMP будут отличаться в зависимости от их положения. Если вы хотите автоматическую инициализацию для своего второго столбца, вам придется подавить его для первого ('DEFAULT 0'). Я думаю, вы должны действительно прочитать документы об этом. –

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