Запишите события, если значения изменились за последние 3 дня - PullRequest
1 голос
/ 03 марта 2020

У меня есть вопрос, у меня есть таблица важности. Но разница между этими значениями составляет 3 дня.

select 
    er.name,
    er.temp as real_temp, 
    der.temp as old_temp
from TEMPR_SILO er
    left join TEMPR_SILO der
    on er.name = der.name
where der.ID_TRANS in (select max(ID_TRANS) - 72 from TEMPR_SILO) 
    and er.ID_TRANS  in (select max(ID_TRANS) from TEMPR_SILO)
Мой ответ
NAME	      REAL_TEMP	OLD_TEMP
SENSOR0001	7.98	    9.66
SENSOR0002	8.04	    9.91
SENSOR0003	7.91	    0.41
SENSOR0004	9.54	   -0.27
SENSOR0005	9.85	   -1.09
SENSOR0006	9.35	   -1.59
SENSOR0007	8.54	   -1.34

То есть в ответе у меня есть название датчика, а температура настоящая и старая, которая уже 3 дня. У меня вопрос, могу ли я сделать так, чтобы, если температура упала до 5, у меня была запасная таблица ALARM, которая

 INSERT INTO ALARM ( NAME, INFO)    VALUES ( er.name ,'The temperature has greatly changed')
В таблице всегда будет 600 значений. Спасибо за помощь) Я хочу реализовать этот код в фоновом режиме, который будет вызываться каждый час)

1 Ответ

0 голосов
/ 12 марта 2020

Вы можете добавить следующий запрос в фоновую задачу, которая будет служить этой цели.

INSERT INTO IMS.ALARM (NAME,INFO)  
select er.name,'The temperature has significantly dropped'
from IMS.TEMPR_SILO er
    left join IMS.TEMPR_SILO der on er.name = der.name
where der.ID_TRANS in (select max(ID_TRANS) - 72 from IMS.TEMPR_SILO) 
and er.ID_TRANS  in (select max(ID_TRANS) from IMS.TEMPR_SILO)
and der.temp-er.temp>=6;

На мой взгляд, ваше решение может быть немного улучшено, если вы управляете системой «Тревожные» в Trigger вместо какого-либо фонового процесса, потому что у этого способа есть некоторые недостатки, например:

  • Непрерывный фоновый процесс будет выполнять дополнительный почасовой ввод-вывод в дополнение к потребляемой вычислительной мощности

  • По любым причинам, если новые записи не приходят, программа может регистрировать / вставлять новые сигналы тревоги на основе устаревших данных

Однако, если вы запишите событие триггера «ON INSERT» в та же таблица TEMPR_SILO с использованием вышеупомянутого запроса затем:

  • Она будет выполняться автоматически, как и когда будет вставлена ​​новая запись
  • Ложных аварий можно избежать
  • Без фона потребуется процесс

Надеюсь, это решение подойдет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...