1

У меня есть триггер, выполняющий "копирование" записей из моей базы данных 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