powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Получение значений итемов в триггере
11 сообщений из 11, страница 1 из 1
Получение значений итемов в триггере
    #39107303
Vlad_567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день/ночь.
Как в триггере получить какие-либо значения из итемов приложения?

Пользователь зашёл в Apex приложение, в приложении определяем IP-адрес и идентификатор пользователя(по обычному справочнику). Далее, пользователь создаёт/редактирует/удаляет данные в какой-то таблице. Нужно логировать его действия (создание/редактирование/удаление строк в таблице) и сделать нужно это из триггера. Из триггера нужно, т.к. нужно сравнивать значения до изменения и после и выполнять какие-то действия в зависимости от изменений. А вот как получить в триггере IP компьютера и идентификатор пользователя?

При вставке и редактировании можно из приложения вставить необходимые значения в нужные колонки, а как при удалении?
...
Рейтинг: 0 / 0
Получение значений итемов в триггере
    #39107318
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad_567,
:APP_USER есть.
IP пишешь при входе в форме логин из процесса.
При работе его уже писать не надо.
Старое и новое значение в триггере это new. old.
Можно из самого APEX тоже логировать, но это хуже.
...
Рейтинг: 0 / 0
Получение значений итемов в триггере
    #39107320
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad_567,
Маркер удаления тоже есть.
Использование в бд айтемсов apex плохой стиль
...
Рейтинг: 0 / 0
Получение значений итемов в триггере
    #39107325
Vlad_567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Маркер удаления тоже есть. - что это такое?

IP адрес получаю при входе в приложение, там-же идентификатор пользователя.
У меня пока один (не полный) вариант: в таблице сделать 2 колонки (IP_ADDR и ID_USER); при вставке/редактировании таблицы заполнять эти колонки из приложения; в триггере получается будут значения: IP_ADDR и ID_USER, а также old и new значения всех колонок.
А что делать при удалении из таблицы? При удалении нет ни того ни другого.
Если бы это было Delphi приложение, можно было бы узнать имя компьютера прямо из триггера (не важно в какой момент: insert/update/delete), как вариант из пакетных переменных. А в апексе такое не проходит.
...
Рейтинг: 0 / 0
Получение значений итемов в триггере
    #39107329
Vlad_567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может можно где-то на сервере сохранить идентификатор открытого пользователем приложения, чтобы он был доступен из триггера? Что-то аналогичное пакетной переменной (с программой на Delphi, когда у каждой открытой программы своя сессия).
...
Рейтинг: 0 / 0
Получение значений итемов в триггере
    #39107338
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad_567,
Я же назвал :app_user?
При удалении из триггера пишут в таблу логов
...
Рейтинг: 0 / 0
Получение значений итемов в триггере
    #39107340
Vlad_567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А есть какие-то минусы, нюансы, если в триггере просто получить значение итема?
например: v('ITEM_1')
Сделал тестовую табличку и приложение, вроде работает (пробовал получить значение итема как со страницы, так и итема приложения), но как-то всё слишком просто.
...
Рейтинг: 0 / 0
Получение значений итемов в триггере
    #39107341
Vlad_567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Vlad_567,
Я же назвал :app_user?
При удалении из триггера пишут в таблу логов

пока писал свой сообщение, появилось - это сообщение.
в триггере v('app_usser')
...
Рейтинг: 0 / 0
Получение значений итемов в триггере
    #39107410
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad_567но как-то всё слишком просто
Да. Говнокод писать очень просто и быстро. И главное, он тоже будет работать.
Если это лаба, то потянет.
Если нет, то я выше написал что делать в твоём случае. В чём проблема?
...
Рейтинг: 0 / 0
Получение значений итемов в триггере
    #39107459
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad_567,
у меня так:

глобальная процедура
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE OR REPLACE PROCEDURE LOG_APP (
   pID               NUMBER,
   pCONST_LOG_ENTITY_NAME   VARCHAR2,
   pOperType                    VARCHAR2,
   pTXT                         VARCHAR2
)
IS
BEGIN
  insert into t_log
    (ap_uname, entity, crud, txt, id_inspection)
  values
    (v('APP_USER'), pCONST_LOG_ENTITY, pOperType, substr(pTXT,1,3800), pID);
END LOG_APP;



в триггере

Код: sql
1.
2.
IF DELETE THEN
   LOG_APP (:old.ID, "константаПакетСущности", 'D', :old.FIO)


т.е. кроме v('APP_USER') в БД нет айтемсов
...
Рейтинг: 0 / 0
Получение значений итемов в триггере
    #39107464
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad_567Может можно где-то на сервере сохранить идентификатор открытого пользователем приложения, чтобы он был доступен из триггера? Что-то аналогичное пакетной переменной (с программой на Delphi, когда у каждой открытой программы своя сессия).
у D длинные транзакции и сессии. Тут они обезличенные и короткие
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Получение значений итемов в триггере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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