2010-10-25 2 views
1

У меня есть таблица MySql, которая имеет столбец временной метки.Сделайте обновление столбца TIMESTAMP, хотя я ничего не изменил?

В таблице также много других столбцов.

У меня есть раздел с изменениями на моей странице.

Когда пользователи меняют свои объявления, я хочу, чтобы временная метка обновляла метку времени. И это так, но иногда вы вообще не меняете классифицирование, вы просто хотите, чтобы оно было «обновлено».

Как я могу обновить колонку в столбце TimeStamp, даже если ничего не обновлено?

Ie:

UPDATE table 
    SET text='hello' 
    WHERE table.id='id_here'; 

В приведенном выше примере, если столбец "текст" уже привет, ничего не случилось бы здесь. Временная метка не будет обновляться.

Любые пути вокруг этого, кроме добавления другого столбца? Какие-либо настройки MySql?

Благодаря

ответ

1

Почему бы вам просто не обновить столбец временной метки с меткой времени?

UPDATE table 
    SET timestamp = now() 
    WHERE table.id='id_here'; 

Возможно, мне не хватает части вашей проблемы?

+0

Столбец «timestamp» автоматически обновляется MySQL, то есть без необходимости явно указывать его. Однако он обновляется только в том случае, если строка «изменяется»: MySQL определяет это, поскольку новое значение отличается от старых значений (а не только строки, соответствующей WHERE). Можно вручную обновить столбец временной метки (это будет работать), но это приведет к поражению точки отметки времени (таким образом, вопрос). –

+0

Я думаю, что это самое простое решение для меня, хотя ...Но в будущем я сделаю это вручную, с datetime ... Спасибо – 2010-10-25 12:02:20

0

Это не совсем ответ на ваш вопрос, но я думаю, что временные метки столбцов, как правило, плохая идея. Причина, по которой они представляют собой плохую идею, - это такие вещи. Вы позволяете MySQL делать вещи автоматически, и если ее идея о том, что она должна делать автоматически, это не совсем ваша идея о том, что вы хотите, чтобы сделать это, тогда вы застряли.

Я бы добавил дополнительную колонку, введите datetime (в зависимости от необходимой точности) и всегда явно обновляйте ее.

0

Столбец Timestamp - отличная идея, все СУБД предприятия имеют их; все работают одинаково автоматически. «Материал» - это стандартные и четко документированные технические операции. Он не обновляется напрямую, просто чтобы люди не делали глупостей, подобных этому, и разрушали истинную ценность того, что оно предназначено; поставщик правильно защитил вашу базу данных от злоупотреблений и подрывной деятельности.

Неправильное использование столбца временной шкалы, это плохая идея.

Попытка заставить его делать то, что он никогда не планировал делать, это плохая идея.

UPDATE ... SET «привет» на «привет» - это грубое злоупотребление и ненужная работа на сервере.

Вы пытаетесь получить столбец Timestamp для идентификации чего-то другого, кроме отметки времени. Плохая идея. Это (факт) должно быть представлено в данных (столбец). Делайте это правильно. Добавьте столбец DATE в таблицу: RenewedDate.

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