|
Помогите разобраться с триггером
|
|||
---|---|---|---|
#18+
Добрый день Уважаемые. Есть таблица TB_PARAMS в которой всего несколько строк, но каждая строка обновляется с некой периодичностью Код: sql 1. 2. 3. 4.
и есть таблица TB_REG_STRING Код: sql 1. 2. 3. 4. 5.
Нужно, чтобы при изменении значения поля PARAM_VALUE в таблице TB_PARAMS, в таблицу TB_REG_STRING записывалось новое значение этого поля и 'NOW' в поле DT. При этом запись в таблицу TB_REG_STRING должна происходить ТОЛЬКО ЕСЛИ новое значение PARAM_VALUE отличается от того, которое записано в последней добавленной записи TB_REG_STRING. В общем это некий журнал, который пишет все изменения поля PARAM_VALUE... C 'NOW' все понятно: Код: sql 1. 2. 3. 4. 5. 6. 7.
А как задать сравнение с последним значением? Вложенным SELECT-ом? Буду признателен за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 10:40 |
|
Помогите разобраться с триггером
|
|||
---|---|---|---|
#18+
iVaRela, Выбирай select`ом, что мешает? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 10:54 |
|
Помогите разобраться с триггером
|
|||
---|---|---|---|
#18+
iVaRela, в общем-то изменение должно писать триггером AFTER UPDATE. Можно универсальный триггер написать чтобы работало как при вставке так и при изменении. Не уверен что вам там какое-то мифическое последнее значение нужно. Скорее всего достаточно в триггере на UPDATE таблицы TB_PARAMS сравнить старое и новое значение поля PARAM_VALUE. Читай про контекстные переменные NEW.* и OLD.* ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 10:55 |
|
Помогите разобраться с триггером
|
|||
---|---|---|---|
#18+
iVaRelaА как задать сравнение с последним значением?if (old.tra_la_la != new.tra_la_la) then и далее свою логику. логирование традиционно пишут в афтер триггеры на логируемой таблице. Это лаба-курсовик? Ели да, то сгодится, если нет, то схема данных плоха. таблица TB_PARAMS просто лишняя она мешает и будут гарантированные траблы с многоканальным доступом на запись. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 10:58 |
|
Помогите разобраться с триггером
|
|||
---|---|---|---|
#18+
iVaRela, не совсем понятно, каков критерий записи в таблицу TB_REG_STRING значения PARAM_VALUE? На таблицы какие-нибудь ограничения наложены в виде PRIMARY KEY и UNIQUE? С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 10:58 |
|
Помогите разобраться с триггером
|
|||
---|---|---|---|
#18+
Симонов ДенисiVaRela, в общем-то изменение должно писать триггером AFTER UPDATE. Можно универсальный триггер написать чтобы работало как при вставке так и при изменении. Не уверен что вам там какое-то мифическое последнее значение нужно. Скорее всего достаточно в триггере на UPDATE таблицы TB_PARAMS сравнить старое и новое значение поля PARAM_VALUE. Читай про контекстные переменные NEW.* и OLD.* Да, с BEFORE UPDATE это я ошибся. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 11:41 |
|
Помогите разобраться с триггером
|
|||
---|---|---|---|
#18+
PolesoviVaRela, не совсем понятно, каков критерий записи в таблицу TB_REG_STRING значения PARAM_VALUE? На таблицы какие-нибудь ограничения наложены в виде PRIMARY KEY и UNIQUE? С уважением, Polesov. PRIMARY KEY - поле ID, оно на генераторе висит, я опустил этот момент. Уникальности нет. Таблица TB_PARAMS должна хранить набор параметров (конфигурация устройства), этот набор может изменяться произвольно разными пользователями. Задача триггера - сохранить все изменения, которые были произведены в TB_PARAMS в таблице TB_REG_STRINGS. Я понимаю, что можно обойтись без TB_PARAMS, и писать конфигурацию непосредственно в TB_REG_STRINGS методом INSERT OR UPDATE с условием OLD.PARAM_VALUE <> NEW.PARAM_VALUE, и в качестве конфигурации устройства выгружать из TB_REG_STRINGS последние записи, но будет ли этот способ быстрее чем тот, что я описал? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 11:52 |
|
|
start [/forum/topic.php?fid=40&msg=39215362&tid=1562230]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 160ms |
0 / 0 |