Вы можете использовать функцию V()
для прямой ссылки на переменные связывания APEX, такие как :APP_USER
в триггере базы данных, или на самом деле в любом PL / SQL вне APEX. APEX также обычно использует состояние пакета для хранения глобальных переменных , к которым необходимо обращаться извне. См. Здесь для некоторого обсуждения .
В вашем случае, вместо :APP_USER
, вы можете использовать V('APP_USER')
или APEX_APPLICATION.G_USER
. Документация здесь .
Обратите внимание, что если записи удаляются из вашей таблицы за пределами APEX (например, администратором базы данных, выполняющим delete from RECORD_TABLE
), поле DELETED_BY будет нулевым. Поэтому вам может понадобиться что-то вроде:
COALESCE(V('APP_USER'), SYS_CONTEXT ('USERENV', 'OS_USER'), USER)
Предпочитать пользователя APEX, если он доступен, или пользователя ОС, если он доступен, или, наконец, текущего пользователя схемы, если ничего другого не доступно.