ORACLE APEX 创建登录触发器

ORACLE APEX CREATE LOGON TRIGGER

我想在任何用户登录时使用特定条件(where 子句)更新我的 table 状态..

create or replace TRIGGER AUTO_COMPLETE
AFTER LOGON ON SCHEMA
BEGIN
    UPDATE SESSIONS
    SET SESSIONS.STATUS = 5
    WHERE SESSIONS.STATUS =2
    AND TO_CHAR(SESSIONS.SESSION_DATE, 'MM-DD-YYYY HH24.MM') < TO_CHAR (SYSDATE, 'MM-DD-YYYY HH24.MM');
END AUTO_COMPLETE;

不幸的是,这个触发器没有被触发,我没有错误!!

我认为最好的方法是在您的应用程序设置中,您可以用户绑定变量来验证用户名或其他内容。

Shared components / Security Attributes / Database Session  

或者另一种选择是在身份验证后创建一个进程

Apex 是无状态的,请参阅第一段 here。这意味着为每个页面呈现或 post 进程创建一个新的数据库会话。我认为当用户在应用程序中导航时,这会使登录触发器不断触发。

您可以在您的应用程序中创建一个带有点“身份验证后”的应用程序进程。这只会在用户验证后为应用程序触发一次。

将此功能与您的数据库分开是有意义的。当您通过 sqldeveloper 连接或通过 rest 连接时,将触发登录触发器 - 这会影响性能。