Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Создание триггера на AS400 / 18 сообщений из 18, страница 1 из 1
06.07.2007, 15:47
    #34644293
Don VinNi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Создаю тригер для того что бы при удаление данных из одной таблицы эти же данные залились в другую таблицу.

Код: plaintext
1.
2.
3.
4.
5.
6.
create trigger deliver 
after delete
on db.DEL2007
referencing old as old_del
for each row
mode db2sql
insert into db2.del2007 select * from yeis.deliver where id=old_del.id

id является уникальным.

iSeries навигатор ругается:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL State:  42704 
Vendor Code: - 204 
Message: [SQL0204] JAVA in QSYS type *LIB not found. Cause . . . . . :   JAVA in QSYS type *LIB was
 not found. If the member name is *ALL, the table is not partitioned. If this is an ALTER TABLE 
statement and the type is *N, a constraint or partition was not found. If this is not an ALTER TABLE 
statement and the type is *N, a function, procedure, trigger or sequence object was not found. If a 
function was not found, JAVA is the service program that contains the function.  The function will not 
be found unless the external name and usage name match exactly.  Examine the job log for a message 
that gives more details on which function name is being searched for and the name that did not match. 
Recovery  . . . :   Change the name and try the request again.  If the object is a node group, ensure 
that the DB2 Multisystem product is installed on your system and create a nodegroup with the 
CRTNODGRP CL command. If an external function was not found, be sure that the case of the 
EXTERNAL NAME on the CREATE FUNCTION statement exactly matches the case of the name exported 
by the service program.


вчем проблема немогу понят. помогите!
...
Рейтинг: 0 / 0
06.07.2007, 16:36
    #34644498
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Проблема в том, что вы вошли в as400 под пользователем JAVA, а в базе такой схемы (библиотеки по as-очному) нету.
Укажите явно имя схемы у создаваемого триггера, в которой хотите этот триггер создать.
...
Рейтинг: 0 / 0
09.07.2007, 10:07
    #34646579
Don VinNi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Mark BarinsteinПроблема в том, что вы вошли в as400 под пользователем JAVA, а в базе такой схемы (библиотеки по as-очному) нету.
Укажите явно имя схемы у создаваемого триггера, в которой хотите этот триггер создать.

Спасибо за помошь. Помогло. Создал но вот почему то он не работает. Удоляю запись в таблице db.deliver a в таблице db2.del2007 ее нету. Вот еще раз мой коректный (надеюс на это) SQL:

Код: plaintext
1.
2.
3.
4.
5.
6.
create trigger db.deliver 
after delete
on db.DELIVER
referencing old as old_del
for each row
mode db2sql
insert into db.del2007 select * from db.deliver where id=old_del.id
...
Рейтинг: 0 / 0
09.07.2007, 10:24
    #34646603
bananarama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Don VinNi Mark BarinsteinПроблема в том, что вы вошли в as400 под пользователем JAVA, а в базе такой схемы (библиотеки по as-очному) нету.
Укажите явно имя схемы у создаваемого триггера, в которой хотите этот триггер создать.

Спасибо за помошь. Помогло. Создал но вот почему то он не работает. Удоляю запись в таблице db.deliver a в таблице db2.del2007 ее нету. Вот еще раз мой коректный (надеюс на это) SQL:

Код: plaintext
1.
2.
3.
4.
5.
6.
create trigger db.deliver 
after delete
on db.DELIVER
referencing old as old_del
for each row
mode db2sql
insert into db.del2007 select * from db.deliver where id=old_del.id


а права на db.del2007 позволяют делать туда запись? а что joblog говорит?
...
Рейтинг: 0 / 0
09.07.2007, 10:27
    #34646617
bananarama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Don VinNi Mark BarinsteinПроблема в том, что вы вошли в as400 под пользователем JAVA, а в базе такой схемы (библиотеки по as-очному) нету.
Укажите явно имя схемы у создаваемого триггера, в которой хотите этот триггер создать.

Спасибо за помошь. Помогло. Создал но вот почему то он не работает. Удоляю запись в таблице db.deliver a в таблице db2.del2007 ее нету. Вот еще раз мой коректный (надеюс на это) SQL:

Код: plaintext
1.
2.
3.
4.
5.
6.
create trigger db.deliver 
after delete
on db.DELIVER
referencing old as old_del
for each row
mode db2sql
insert into db.del2007 select * from db.deliver where id=old_del.id


Кстати, на мой взгляд в этом триггере должно быть MODE DB2ROW
...
Рейтинг: 0 / 0
09.07.2007, 10:52
    #34646700
Don VinNi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Сори, Don VinNi Mark BarinsteinПроблема в том, что вы вошли в as400 под пользователем JAVA, а в базе такой схемы (библиотеки по as-очному) нету.
Укажите явно имя схемы у создаваемого триггера, в которой хотите этот триггер создать.

Спасибо за помошь. Помогло. Создал но вот почему то он не работает. Удоляю запись в таблице db.deliver a в таблице db2.del2007 ее нету. Вот еще раз мой коректный (надеюс на это) SQL:

Код: plaintext
1.
2.
3.
4.
5.
6.
create trigger db.deliver 
after delete
on db.DELIVER
referencing old as old_del
for each row
mode db2sql
insert into db.del2007 select * from db.deliver where id=old_del.id


Удоляю запись в таблице db.deliver a в таблице db.del2007 ее нету.
...
Рейтинг: 0 / 0
09.07.2007, 10:59
    #34646725
Don VinNi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
bananarama Don VinNi Mark BarinsteinПроблема в том, что вы вошли в as400 под пользователем JAVA, а в базе такой схемы (библиотеки по as-очному) нету.
Укажите явно имя схемы у создаваемого триггера, в которой хотите этот триггер создать.

Спасибо за помошь. Помогло. Создал но вот почему то он не работает. Удоляю запись в таблице db.deliver a в таблице db2.del2007 ее нету. Вот еще раз мой коректный (надеюс на это) SQL:

Код: plaintext
1.
2.
3.
4.
5.
6.
create trigger db.deliver 
after delete
on db.DELIVER
referencing old as old_del
for each row
mode db2sql
insert into db.del2007 select * from db.deliver where id=old_del.id


а права на db.del2007 позволяют делать туда запись? а что joblog говорит?

а что такое joblog откуда ее смотреть
...
Рейтинг: 0 / 0
09.07.2007, 11:19
    #34646809
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Don VinNi
Код: plaintext
1.
2.
3.
4.
5.
6.
create trigger db.deliver 
after delete
on db.DELIVER
referencing old as old_del
for each row
mode db2sql
insert into db.del2007 select * from db.deliver where id=old_del.id
Удоляю запись в таблице db.deliver a в таблице db.del2007 ее нету.Вы удаляете записи из таблицы и хотите, чтоб в after триггере они все еще были видны в этой таблице?
Вы их там уже не найдете.
К ним можно обратиться только через OLD ROW (или OLD_TABLE).
По-хорошему, надо так (триггер на statement, а не на row):
Код: plaintext
1.
2.
3.
4.
5.
create trigger db.deliver 
after delete
on db.DELIVER
referencing old_table as old_del
for each statement
insert into db.del2007 select * from old_del
...
Рейтинг: 0 / 0
09.07.2007, 11:27
    #34646838
bananarama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Mark Barinstein Don VinNi
Код: plaintext
1.
2.
3.
4.
5.
6.
create trigger db.deliver 
after delete
on db.DELIVER
referencing old as old_del
for each row
mode db2sql
insert into db.del2007 select * from db.deliver where id=old_del.id
Удоляю запись в таблице db.deliver a в таблице db.del2007 ее нету.Вы удаляете записи из таблицы и хотите, чтоб в after триггере они все еще были видны в этой таблице?
Вы их там уже не найдете.
К ним можно обратиться только через OLD ROW (или OLD_TABLE).
По-хорошему, надо так (триггер на statement, а не на row):
Код: plaintext
1.
2.
3.
4.
5.
create trigger db.deliver 
after delete
on db.DELIVER
referencing old_table as old_del
for each statement
insert into db.del2007 select * from old_del


кстати Марк, а как такие тригера реагируют на full delete? он все строки вставит в бекап-таблицу?
...
Рейтинг: 0 / 0
09.07.2007, 11:37
    #34646865
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
bananaramaкстати Марк, а как такие тригера реагируют на full delete? он все строки вставит в бекап-таблицу?Если под full delete понимается CLRPFM, то delete триггеры не активируются.
Я не помню точно, надо ли триггеры явно блокировать перед выполнением CLRPFM или нет.
...
Рейтинг: 0 / 0
09.07.2007, 11:39
    #34646870
bananarama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Mark Barinstein bananaramaкстати Марк, а как такие тригера реагируют на full delete? он все строки вставит в бекап-таблицу?Если под full delete понимается CLRPFM, то delete триггеры не активируются.
Я не помню точно, надо ли триггеры явно блокировать перед выполнением CLRPFM или нет.

нет, я имею ввиду delete from table, без where
ну или когда одним стейтментом удаляется несколько строк
...
Рейтинг: 0 / 0
09.07.2007, 11:48
    #34646902
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
bananaramaнет, я имею ввиду delete from table, без where
ну или когда одним стейтментом удаляется несколько строкА как они, эти триггеры, еще могут реагировать на такие delete?
Данный триггер вставляет в архивную таблицу все удаленные строки вне зависимости от того, какой командой delete они были удалены.
Ради интереса: а что, есть базы, в которых триггеры удаления работают по-разному, в зависимости от вида команды delete?
...
Рейтинг: 0 / 0
09.07.2007, 11:57
    #34646948
bananarama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Mark Barinstein bananaramaнет, я имею ввиду delete from table, без where
ну или когда одним стейтментом удаляется несколько строкА как они, эти триггеры, еще могут реагировать на такие delete?
Данный триггер вставляет в архивную таблицу все удаленные строки вне зависимости от того, какой командой delete они были удалены.
Ради интереса: а что, есть базы, в которых триггеры удаления работают по-разному, в зависимости от вида команды delete?

хз, сто лет триггеры не пользовал, все больше через stored proc, поэтому и спрашиваю - смущает как раз таки конструкция "for each statement" вместо "for each row"
а пробовать самому лениво, понедельник же -)
...
Рейтинг: 0 / 0
09.07.2007, 12:10
    #34646998
Don VinNi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Спасибо Mark! Сделал все работает. А вот интересно для чего используется mode db2sql, я ее использовал потомучто в примерах было так показано, а в доке не написано. И еще что имел виду bananarama когда он сказал посмотреть joblog. Как ее посмотреть?
...
Рейтинг: 0 / 0
09.07.2007, 12:20
    #34647047
bananarama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Don VinNiСпасибо Mark! Сделал все работает. А вот интересно для чего используется mode db2sql, я ее использовал потомучто в примерах было так показано, а в доке не написано. И еще что имел виду bananarama когда он сказал посмотреть joblog. Как ее посмотреть?

джоблог смотрится в командной тсроке
для этого в момент, когда у тебя открыта odbc-сессия запускаешь команду
wrkobjlck USER *usrprf, гдк user - кем логинишься
ищешь работу qzdasoinit, нажимаешь 5
потом нажимаешь 10
это и будет джоблог
...
Рейтинг: 0 / 0
09.07.2007, 12:29
    #34647087
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
Don VinNiСпасибо Mark! Сделал все работает. А вот интересно для чего используется mode db2sql, я ее использовал потомучто в примерах было так показано, а в доке не написано. Написано кое-что...
Don VinNiИ еще что имел виду bananarama когда он сказал посмотреть joblog. Как ее посмотреть? DSPJOBLOG на сервере или в iSeries Navigator в пунктах меню поищите сочетание "job log".
В job log пишутся всякие диагностические сообщения, которые часто помогают точнее понять, что же случилось.
...
Рейтинг: 0 / 0
09.07.2007, 15:17
    #34647824
dasdasd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
вообще странно. триггер это же пгм-ка которой передаётся триггерный буфер.
а mode же (утрируя) просто определяет какие параметры передаются в пгмку.

когда я писал триггеры так ничего кроме буфера не передавалось
...
Рейтинг: 0 / 0
09.07.2007, 15:21
    #34647837
bananarama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание триггера на AS400
dasdasdвообще странно. триггер это же пгм-ка которой передаётся триггерный буфер.
а mode же (утрируя) просто определяет какие параметры передаются в пгмку.

когда я писал триггеры так ничего кроме буфера не передавалось

это все так для external триггеров, сиквельные ведут себя немного иначе
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Создание триггера на AS400 / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]