Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Как в DB2 посмотреть SQL-текст триггеров, у которых SYSTRIGGERS.ACTION_STATEMENT=NULL?  [new]
SBremen
Member

Откуда:
Сообщений: 14
Приветствую участников узкого круга специалистов по DB2.
В системе IBM DB2 for i v7.2 есть таблица, для которой создано несколько триггеров.
Нужно понять, какие действия выполняются триггерами при DML-операциях с таблицей.

Описание триггеров можно взять из системного каталога QSYS2.SYSTRIGGERS.
SQL-тело триггера находится в поле ACTION_STATEMENT.
Но в SQL Reference про это поле написано:
"Text of the SQL statements in the trigger action.
If this is an obfuscated trigger, the text starts with the WRAPPED keyword and is followed by the encoded form of the statement text.
Contains the null value if this is a trigger created via the ADDPFTRG command."

И для всех триггеров нужной таблицы в этом поле стоит NULL.
Вопрос: где и как в базе данных DB2 for i посмотреть SQL-текст таких триггеров (вероятно, созданных командой ADDPFTRG)?
Менеджер базы данных ведь откуда-то берет SQL-текст для исполнения этих триггеров.
Желательно получить доступ к триггерам средствами SQL. При необходимости - доступ к терминальным утилитам AS400 ACS есть.
12 дек 19, 07:28    [22038290]     Ответить | Цитировать Сообщить модератору
 Re: Как в DB2 посмотреть SQL-текст триггеров, у которых SYSTRIGGERS.ACTION_STATEMENT=NULL?  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4947
SBremen,

Добрый день

Скорее всего, логика заключена в программе с именем TRIGGER_PROGRAM_LIBRARY/TRIGGER_PROGRAM_NAME - это поля таблицы QSYS2.SYSTRIGGERS.
Там не обязательно SQL запросы. Это программа на внешнем языке программирования.
Вы не сможете посмотреть логику, если у вас нет исходного текста этой программы.
14 дек 19, 18:25    [22040477]     Ответить | Цитировать Сообщить модератору
 Re: Как в DB2 посмотреть SQL-текст триггеров, у которых SYSTRIGGERS.ACTION_STATEMENT=NULL?  [new]
SBremen
Member

Откуда:
Сообщений: 14
Mark, благодарю за ответ.
Этого я и опасался.
В перечне объектов схемы с именем из TRIGGER_PROGRAM_NAME есть объект с именем из TRIGGER_PROGRAM_LIBRARY, у которого OBJTYPE = "*PGM" и OBJATTRIBUTE = "RPGLE".

Никогда не сталкивался с языком программирования RPG LE.
Не знаю, кто писал эту программу для триггера и где ее исходный код.

Я правильно понимаю, что такой триггер остается "черным ящиком" и из самой базы данных больше ничего нельзя вытащить, чтобы понять, что и как этот триггер делает?
Известно только, что он синхронизирует данные своей таблицы с несколькими другими таблицами по определенным правилам (которые как раз и нужно узнать), т.е. его логика должна быть не тривиальная.
16 дек 19, 23:02    [22041660]     Ответить | Цитировать Сообщить модератору
 Re: Как в DB2 посмотреть SQL-текст триггеров, у которых SYSTRIGGERS.ACTION_STATEMENT=NULL?  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4947
SBremen
Я правильно понимаю, что такой триггер остается "черным ящиком" и из самой базы данных больше ничего нельзя вытащить, чтобы понять, что и как этот триггер делает?
Да, правильно.
17 дек 19, 10:03    [22041831]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить