powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как использовать Transition Table в TRIGGER-е
3 сообщений из 3, страница 1 из 1
Как использовать Transition Table в TRIGGER-е
    #35682136
Добрый день!

Имеем: DB2 9.1 for LUW.
Хочется: иметь "универсальную" хранимую/функцию для обработки данных, переданных триггерами.
Если грубо, то скажем есть 10 VIEW, на которые навешаны INSTEAD OF триггеры, хочется обрабатывать их данные в одной хранимой, логика обработки одинаковая, а вот кол-во и типы столбцов могут быть разными.
Можно завести десять DDL для хранимых, но чтобы они ссылались на одну функцию в терминах C/C++.

Проблема: При передаче параметров от триггера классическим способом они будут передаваться по одному, т.е. нужно будет обрабатывать список параметров неизвестной длины. Это решаемо, но непонятно как определять тип передаваемого параметра.

Как вариант, триггер может объявлять Transition Table, но тогда непонятно как до нее "добраться" из функции или процедуры. Для DB2 V9.1 for z/OS это решается через локатор для таблицы Accessing transition tables in a user-defined function or stored procedure . Для DB2 for LUW я аналогичного функционала не нашел. Как SESSION-таблицы эти таблицы похоже тоже не существуют.

Как выходить из такой ситуации? Очень не хочется писать идентичный по сути код несколько раз.
Процедура-обработчик нужна внешняя на C/C++, т.к. нужно выполнять некоторые External Actions
...
Рейтинг: 0 / 0
Как использовать Transition Table в TRIGGER-е
    #35682748
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Для передачи транзитивной таблицы в процедуру самый легкий способ - это через постоянную таблицу со всеми полями транзитивной + {appl_id_ varchar(128) - для функции application_id()}.
Т.е. в триггере вам придется:
1. delete from persistent where appl_id_ = application_id()
2. insert into persistent select trans_new.*, application_id() from trans_new
...
Рейтинг: 0 / 0
Как использовать Transition Table в TRIGGER-е
    #35686166
Mark BarinsteinДобрый день.

Для передачи транзитивной таблицы в процедуру самый легкий способ - это через постоянную таблицу со всеми полями транзитивной + {appl_id_ varchar(128) - для функции application_id()}.
Т.е. в триггере вам придется:
1. delete from persistent where appl_id_ = application_id()
2. insert into persistent select trans_new.*, application_id() from trans_new
Спасибо, вариант конечно, но получается что нужно еще создавать временные таблицы по числу VIEW.
Да, получается что на z/OS красивше :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как использовать Transition Table в TRIGGER-е
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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