MySQL Insert Trigger: проверка на наличие дублирующихся записей перед выполнением
У меня есть триггер, выполняющий «копирование» записей из моей базы данных Home Assistant (ПО для домашней автоматизации) в другую таблицу в другой БД. Home Assistant хранит записи в таблице под названием «состояния». Если есть новая запись для entity_id моей Wi-Fi-шкалы Nokia (Withings), я хочу скопировать ее значения в мою таблицу «здоровья» в БД «home». Пока все хорошо, работает с помощью этого триггера:
BEGIN IF new.entity_id = '[my_wifi_scale]' THEN INSERT INTO my_db.health (user, datetime, metric, val1, val2) VALUES ('[my_username]', new.last_changed, 'weight', new.state, JSON_EXTRACT(new.attributes, '$.fat_ratio')); END IF; END
Теперь я хотел бы проверить, существует ли новая запись. Home Assistant регулярно получает значения и не заботится о том, являются ли данные избыточными.
Как я могу изменить триггер так, чтобы он вставлял значение в мою таблицу «health» только в том случае, если поля «user», «val1» и «val2» отличаются от предыдущей записи? Мне все равно, проверяет ли он таблицу триггера («состояния» Home Assistant) или мою («здоровье»).
Я попытался добавить ограничения к моей таблице «работоспособности», но это не соответствует другим значениям, хранящимся в ней, например, значениям артериального давления, которые с большей вероятностью будут повторяться. Поэтому я ищу изменения в триггере.
Есть идеи?
С уважением.
0 ответов на вопрос
Похожие вопросы
-
3
OpenX: mySql VS PostgreSQL
-
4
Каков наилучший способ преобразования базы данных MySQL в базу данных доступа?
-
6
Как остановить запуск служб при загрузке в Ubuntu?
-
-
2
Как мне восстановить мою базу данных?
-
6
MySQL установлен по умолчанию с OS X Leopard 10.5 или 10.6
-
4
Почему PHP выдает «Ошибка сегментации (11)» после «mysql_connect» или «mysql_close»?
-
3
Проблема с подключением к MySQL на другом компьютере в локальной сети
-
3
Помогите настроить MySQL (для использования с PHP и Apache) в OS X
-
10
MySQL не запускается!
-
1
Веб-сервер Mac, безопасность MySQL