Обновление партии данных, даты (+ 1 час), уникальных ограничений - PullRequest
1 голос
/ 13 июня 2019

Я пытаюсь добавить 1 час для каждого значения после определенной даты ...

У меня есть такая таблица:

Colonne Type
id  int(11)
date    datetime    
value   double  
kind    varchar(190)    
data_id int(11) NULL

У меня есть уникальные ограничения по дате. 'Добрый' . 'Data_id'

Я пытаюсь:

update data set `date` = ADDTIME(`date`, '01:00:00') WHERE `date` > '2019-03-31 02:00:00';

Но я получаю сообщение об ошибке

Повторяющаяся запись '2019-03-31 04: 05: 00-ManualDataValue-1' для ключа 'UNIQ_DATE_KIND_DATA_ID

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

Как это сделать? (PS: SELECT * FROM data WHERE date> '2019-03-31 02:00:00' возвращает 1 198 778 записей, поэтому я не могу сделать это вручную: /)

1 Ответ

1 голос
/ 13 июня 2019

Попробуйте:

update data set `date` = ADDTIME(`date`, '01:00:00') WHERE `date` > '2019-03-31 02:00:00' ORDER By date DESC

См. SO для более подробных объяснений.

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