2015-12-29 5 views
2

. У меня есть таблица с именем people со следующим columns-MySQL Обновление нескольких строк с уникальной меткой времени в строке

people_id (primary key, auto inc) 
first_name 
last_name 
timestamp (default - current_timestamp) 

Эта таблица уже 30000 строк до последнего столбца timestamp был добавлен, так что в настоящее время все временные метки совпадают. Я хочу, чтобы каждая временная метка была уникальной, но я не могу этого сделать.

Ближайший answer на StackOverflow я мог найти, представляет Oracle, который предлагает следующий запрос -

UPDATE ITEM_HISTORY SET my_timestamp = SYSTIMESTAMP + NUMTODSINTERVAL(rownum/1000, 'SECOND'); 

Но этот запрос не работает в MySQL, потому что нет таких функций для NUMTODSINTERVAL и SYSTIMESTAMP. Я пытался использовать вышеупомянутый запрос, как -

UPDATE people SET `timestamp` = CURRENT_TIMESTAMP + people_id; 

Но это не удалось, я думаю, потому что, people_id (INT), не может быть добавлен метками времени. Итак, есть ли способ конвертировать и добавлять people_id в метку времени или каким-либо другим способом обновлять строки с уникальными отметками времени?

Спасибо.

+0

'UPDATE people SET \' timestamp \ '= CURRENT_TIMESTAMP + INTERVAL people_id MINUTE;' –

+0

Требование уникальности временных меток кажется очень плохим критерием, и тот, который должен вызывать значительные головные боли дальше по линии. Посмотрите еще раз на свои требования. – eggyal

+0

@eggyal Да, я читал то же самое об этом на связанном SO-ответе. Но мне просто нужно, чтобы они были уникальны, чтобы подтолкнуть обновленные строки к андроидному приложению (и для первого запуска нажатия этого обновления возникла проблема, потому что все строки 30K имели одинаковые временные метки), я раньше отправлялся с Unique/Primary Только Id, но тогда я не мог пропустить последние обновленные строки. Можете ли вы предложить альтернативу для этого? Спасибо, –

ответ

1

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

UPDATE people SET `timestamp` = DATE_ADD(CURRENT_TIMESTAMP , INTERVAL `id` SECOND); 

Read more here about DATE_ADD() function

+0

Это сработало. Спасибо за ответ и связь функции. Я приму ответ, как только stackoverflow timelimit позволит мне. –

0

Но это не удалось, я думаю, потому что, people_id (INT), не могут быть добавлены к временной метки

Конечно, может. вы могли бы использовать UNIX_TIMESTAMP

UPDATE people SET timestamp = DATE_ADD(UNIX_TIMESTAMP(), INTERVAL id SECOND); 
0

Это работает для меня UPDATE люди SET timestamp = UNIX_TIMESTAMP() + people_id ;

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