Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
Если да, то какой синтаксис. Пытаюсь сделать следующее, на таблицу table1 создаю тригер на операцию insert и момент действия after, где имеется следующий код. if exists( select shname into :h1 from schema1.table2 where kod = n.kod) then end if; смысл которого, можно ли сохранить значение из поля shname таблицы table2 в переменной, или так можно сделать только через ХП. Естественно при таком синтаксисе тригер не создаеться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 09:22 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
Попробуй так: declare h1 ...; set h1 = (select shname from schema1.table2 where kod = n.kod); if (...) then end if; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 10:28 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
Ругается на строку с declare [IBM][CLI Driver][DB2/NT] SQL0104N Обнаружен неправильный элемент ";" после текста "N ATOMIC declare h1" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 11:09 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
Тип переменной указан? Напр.: DECLARE H1 VARCHAR(16); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 11:32 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
конечно не указал )) вроде бы работает с одной переменной, но хотелось бы выяснить один момент. Мне надо сохранить значение в переменных пяти полей, тогда если так прописывать set h1 = (select shname from dbadmin.ttrig where kod = n.kod); set h2 = (select inn from dbadmin.ttrig where kod = n.kod); .... set h5 = (select okonx from dbadmin.ttrig where kod = n.kod); то получается, что каждый раз при вставке будет выполняться пять запросов, или в команде SET запросы не выполняются Пробовал прописать так set h1, h2,h3,h4,h5 = (select shname,inn,nomer,codeoff,okonx from dbadmin.ttrig where kod = n.kod); выдает ошибку, буду очень благодарен за разъеснения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 12:59 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
select var1, var2, var3 into h1, h2, h3 from ............ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 13:03 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
OlegA67конечно не указал )) вроде бы работает с одной переменной, но хотелось бы выяснить один момент. Мне надо сохранить значение в переменных пяти полей, тогда если так прописывать set h1 = (select shname from dbadmin.ttrig where kod = n.kod); set h2 = (select inn from dbadmin.ttrig where kod = n.kod); .... set h5 = (select okonx from dbadmin.ttrig where kod = n.kod); то получается, что каждый раз при вставке будет выполняться пять запросов, или в команде SET запросы не выполняются Пробовал прописать так set h1, h2,h3,h4,h5 = (select shname,inn,nomer,codeoff,okonx from dbadmin.ttrig where kod = n.kod); выдает ошибку, буду очень благодарен за разъеснения Место в котором используется триггер насколько критично к скорости выполнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 13:10 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
не получается (( BEGIN ATOMIC declare h1 varchar(15) ; declare h2 smallint; IF exists (select namet,kod into h1,h2 from dbadmin.ttrig where kod = n.kod) THEN insert into dbadmin.test (rrr,nnn) values (h1,h2) ; END IF; END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 13:14 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
Alexander Mozhaev Место в котором используется триггер насколько критично к скорости выполнения? в принципе не критично ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 13:18 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
OlegA67не получается (( BEGIN ATOMIC declare h1 varchar(15) ; declare h2 smallint; IF exists (select namet,kod into h1,h2 from dbadmin.ttrig where kod = n.kod) THEN insert into dbadmin.test (rrr,nnn) values (h1,h2) ; END IF; END Попробуй так, правда не знаю бедет ли компилироваться/работать: BEGIN ATOMIC insert into dbadmin.test select namet,kod from dbadmin.ttrig where kod = n.kod; END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 13:49 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
OlegA67Пробовал прописать так set h1, h2,h3,h4,h5 = (select shname,inn,nomer,codeoff,okonx from dbadmin.ttrig where kod = n.kod); выдает ошибку, буду очень благодарен за разъеснения А где скобки? В триггерах и UDF так: Код: plaintext 1. EXISTS внутри IF не работает! Вместо IF EXIST(выборка) надо Код: plaintext 1. 2. Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 13:53 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
TORTselect var1, var2, var3 into h1, h2, h3 from ............ В триггерах так нельзя. Можно Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 14:02 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
огромное спасибо Victor Metelitsa set (h1, h2,h3,h4,h5) = (select shname,inn,nomer,codeoff,okonx from dbadmin.ttrig where kod = n.kod); это то что нужно было непонятно только, почему не должна работать в тригере конструкция IF EXISTS(выборка) THEN у себя проверял, вроде бы как работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 16:21 |
|
||
|
Можно ли использовать переменные в тригерах?
|
|||
|---|---|---|---|
|
#18+
Хм. Я помню, в предыдущих версиях DB2 EXISTS в IF и CASE WHEN не работал, приходилось выкручитваться через SELECT count(*) и SELECT ... FIRST 1 ROW ... а теперь, значит, работает... ну и дела... Давно я документацию не перечитывал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 21:28 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=43&tid=1605260]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
182ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 467ms |

| 0 / 0 |
