MySQL 插入触发器:执行前检查重复条目

MySQL 插入触发器:执行前检查重复条目

我有一个触发器,正在运行“复制”来自我的 Home Assistant(家庭自动化软件)数据库的条目到另一个数据库中的另一个表。Home Assistant 将条目存储在名为“states”的表中。如果我的 Nokia (Withings) wifi 秤的 entity_id 有新条目,我想将其值复制到 DB“home”中的“health”表中。到目前为止,一切顺利,它正在使用此触发器工作:

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 会定期接收值,并不关心数据是否冗余。

我如何更改触发器,以便只有当字段“user”、“val1”和“val2”与前一个条目不同时,它才将值插入我的“health”表中?我不在乎它是检查触发器的表(Home Assistant 的“states”)还是我自己的表(“health”)。

我确实尝试向“健康”表添加约束,但这不符合其中存储的其他值,例如血压值,这些值更有可能重复。因此,我正在寻找触发器的更改。

有任何想法吗?

感谢和问候。

相关内容