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

Код: 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
Создание триггера на AS400
    #34644498
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема в том, что вы вошли в as400 под пользователем JAVA, а в базе такой схемы (библиотеки по as-очному) нету.
Укажите явно имя схемы у создаваемого триггера, в которой хотите этот триггер создать.
...
Рейтинг: 0 / 0
Создание триггера на AS400
    #34646579
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
...
Рейтинг: 0 / 0
Создание триггера на AS400
    #34646603
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 говорит?
...
Рейтинг: 0 / 0
Создание триггера на AS400
    #34646617
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


Кстати, на мой взгляд в этом триггере должно быть MODE DB2ROW
...
Рейтинг: 0 / 0
Создание триггера на AS400
    #34646700
Don VinNi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сори, 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
Создание триггера на AS400
    #34646725
Don VinNi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Создание триггера на AS400
    #34646809
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
...
Рейтинг: 0 / 0
Создание триггера на AS400
    #34646838
bananarama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Создание триггера на AS400
    #34646865
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bananaramaкстати Марк, а как такие тригера реагируют на full delete? он все строки вставит в бекап-таблицу?Если под full delete понимается CLRPFM, то delete триггеры не активируются.
Я не помню точно, надо ли триггеры явно блокировать перед выполнением CLRPFM или нет.
...
Рейтинг: 0 / 0
Создание триггера на AS400
    #34646870
bananarama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein bananaramaкстати Марк, а как такие тригера реагируют на full delete? он все строки вставит в бекап-таблицу?Если под full delete понимается CLRPFM, то delete триггеры не активируются.
Я не помню точно, надо ли триггеры явно блокировать перед выполнением CLRPFM или нет.

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

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

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

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

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

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


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