MySQL Insert Trigger: Verificando entradas duplicadas antes de executar

1

Eu tenho um gatilho executando "copiar" entradas do banco de dados do meu Home Assistant (software de automação residencial) para outra tabela em outro banco de dados. Home Assistant armazena entradas em uma tabela chamada "estados". Se houver uma nova entrada para o entity_id da minha escala Wi-Fi da Nokia (Withings), quero copiar seus valores para minha tabela de "integridade" no DB "home". Até agora, tudo bem, está funcionando usando esse gatilho:

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

Agora, gostaria de verificar se a nova entrada já existe. O Home Assistant está recebendo os valores regularmente e não se importa se os dados são redundantes.

Como posso alterar o gatilho para que ele insira o valor apenas em minha tabela de "saúde" se os campos "user", "val1" e "val2" forem diferentes da entrada anterior? Eu não me importo se verificar a tabela do gatilho ("estados" do Assistente Inicial) ou a minha ("saúde").

Eu tentei adicionar restrições à minha tabela de "saúde", mas isso não está de acordo com outros valores armazenados nela, como, por exemplo, valores de pressão arterial, que são mais prováveis de se repetirem. Portanto, estou procurando uma mudança no gatilho.

Alguma idéia?

Obrigado / cumprimentos.

    
por Jan 07.09.2018 / 09:58

0 respostas

Tags