У меня есть триггер, выполняющий "копирование" записей из моей базы данных 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) или мою ("здоровье").
Я попытался добавить ограничения к моей таблице "работоспособности", но это не соответствует другим значениям, хранящимся в ней, например, значениям артериального давления, которые с большей вероятностью будут повторяться. Поэтому я ищу изменения в триггере.
Есть идеи?
С уважением.