|
Вопрос по хранимым процедурам
|
|||
---|---|---|---|
#18+
Доброго времени суток. Заранее извиняюсь за глупый вопрос. Суть такова: Есть некое приложение, которое добавляет в таблицу данные инсертами(примерный вид результата): Data cnlnum val status 2019-02-20 13:29:45.678054 721 5 1 2019-02-20 13:29:45.678054 722 4 1 2019-02-20 13:29:45.678054 723 3 1 2019-02-20 13:29:45.678054 724 2 1 2019-02-20 13:29:45.689011 721 5 1 2019-02-20 13:29:45.689011 722 4 1 2019-02-20 13:29:45.689011 723 3 1 2019-02-20 13:29:45.689011 724 2 1 2019-02-20 13:29:46.182297 8001 1 1 2019-02-20 13:29:46.193291 8001 0 1 2019-02-20 13:30:45.697236 721 6 1 2019-02-20 13:30:45.697236 722 5 1 2019-02-20 13:30:45.697236 723 4 1 2019-02-20 13:30:45.697236 724 3 1 2019-02-20 13:30:45.708173 721 6 1 2019-02-20 13:30:45.708173 722 5 1 2019-02-20 13:30:45.708173 723 4 1 2019-02-20 13:30:45.708173 724 3 1 2019-02-20 13:30:46.225274 8001 0 1 2019-02-20 13:30:46.236325 8001 0 1 Мне необходимо после того, как значение канала 8001 изменилось на 1 прочитать следующие значения каналов 721-724 один раз и добавить их в отдельную таблицу. Так как я не могу повлиять на формат записи данных, то, как я понимаю, я могу это решить триггерами и хранимыми функциями, верно?(хотя уже склоняюсь к обработке этой таблицы данных по расписанию). Но я не совсем понимаю, как в функции, вызванной по триггеру, мне сформировать новый инсерт в другую таблицу, если нужных для этого данных на момент срабатывания триггера еще нет?(видно по таймштампам, что они приходят позже). Буду рад любому указателю стороны, в которую стоит копать. Триггер: Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 10:18 |
|
Вопрос по хранимым процедурам
|
|||
---|---|---|---|
#18+
Unsocial… Мне необходимо после того, как значение канала 8001 изменилось на 1 прочитать следующие значения каналов 721-724 один раз и добавить их в отдельную таблицу. … Что значит “следующие значения”? Покажите на примере ваших данных какие записи надо прочитать и добавить, какой должен быть результат в представленной и второй таблицах? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 11:11 |
|
Вопрос по хранимым процедурам
|
|||
---|---|---|---|
#18+
vyegorovUnsocial… Мне необходимо после того, как значение канала 8001 изменилось на 1 прочитать следующие значения каналов 721-724 один раз и добавить их в отдельную таблицу. … Что значит “следующие значения”? Покажите на примере ваших данных какие записи надо прочитать и добавить, какой должен быть результат в представленной и второй таблицах? Data cnlnum val status2019-02-20 13:29:45.678054 721 5 12019-02-20 13:29:45.678054 722 4 12019-02-20 13:29:45.678054 723 3 12019-02-20 13:29:45.678054 724 2 12019-02-20 13:29:45.689011 721 5 12019-02-20 13:29:45.689011 722 4 12019-02-20 13:29:45.689011 723 3 12019-02-20 13:29:45.689011 724 2 12019-02-20 13:29:46.182297 8001 1 12019-02-20 13:29:46.193291 8001 0 12019-02-20 13:30:45.697236 721 6 12019-02-20 13:30:45.697236 722 5 12019-02-20 13:30:45.697236 723 4 12019-02-20 13:30:45.697236 724 3 12019-02-20 13:30:45.708173 721 6 12019-02-20 13:30:45.708173 722 5 12019-02-20 13:30:45.708173 723 4 12019-02-20 13:30:45.708173 724 3 12019-02-20 13:30:46.225274 8001 0 12019-02-20 13:30:46.236325 8001 0 1 Зелёным отмечен триггер, оранжевым то, что нужно считать и добавить в таблицу вида: val where cnlnum=721 val where cnlnum=722 val where cnlnum=723 val where cnlnum=7246 5 4 3 Исходную таблицу изменять не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 11:43 |
|
Вопрос по хранимым процедурам
|
|||
---|---|---|---|
#18+
Unsocial, Оранжевые записи в будущем по отношению к триггерной, в таком виде триггер не написать. Тут скорее надо делать так: когда вставляется запись выключающая триггер, смотреть что там было с момента включения и регистрировать. Вопрос в том — как не сделать дубликаты, т.к. у вас там несколько “выключающих” записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 13:55 |
|
Вопрос по хранимым процедурам
|
|||
---|---|---|---|
#18+
Человеку нужно: а) запомнить дату у триггерной записи Дату. кхм. с точностью до микросекунд, лол Обзовем ее d0 б) выбрать val из записей где cnlnum = 721 и время = (выбрать минимальное время для канала 721 где время > d0) в) аналогично для 722 Г) 723 д) 724 е) отпивотить результат в четыре столбца. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 15:35 |
|
|
start [/forum/topic.php?fid=53&msg=39777265&tid=1995322]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 259ms |
total: | 379ms |
0 / 0 |