@strelkovandreyv

Как в MySQL обновить имеющуюся строку если её поле не изменилось либо добавить новую если изменилось?

Добрый день, имеются 2 идентичные таблицы (первая это таблица, а вторая вьюшка), состоящие из следующих колонок:

id ; host ; hash ; title ; timestamp

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

1 ; comp1 ; 231812 ; ACER ; 1234567
2; comp2 ; 249735 ; Dell ; 1234568
3; comp3 ; 457239 ; LG ; 1234569

Информация разная и она должна попасть идентично в таблицу, но тут проходит время,
и во вьюшке появляются новые данные типа таких

4 ; comp1 ; 234814 ; ACER2 ; 1234589

Нужно посмотреть по полю host есть ли такая же запись со значением comp1 в таблице, если она имеется и у неё hash отличается, получается это что то новое пришло, нужно создать новую строку в таблице с этими значениями...
а если же пришла строка

4 ; comp1 ; 231812 ; ACER ; 1239093

т.е. хэш не поменялся, то нужно найти эту строку опираясь на host (отсортировав по id) и самую последнюю запись (по id) обновить значения у id и timestamp новые значениями, т.е. как бы просто обновить последним id-шником и датой информации как бы

Как это лучше сделать, и реально ли такое процедурой сделать?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Уникальный составной ключ (`host`, `hash`) и INSERT ... ON DUPLICATE KEY UPDATE.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы