我将使用 Application Express 和 Oracle Database Enterprise 构建应用程序,VPD 使用 Context 在架构上实现,针对开发人员问题,我在登录触发器上设置了用户;
但我无法查看应用程序内的数据,但我可以使用 SQL 语句查看它
那么当使用 VPD 、 Context 或 On 登录触发器时,他们在 Apex 中的问题是什么?
我将使用 Application Express 和 Oracle Database Enterprise 构建应用程序,VPD 使用 Context 在架构上实现,针对开发人员问题,我在登录触发器上设置了用户;
但我无法查看应用程序内的数据,但我可以使用 SQL 语句查看它
那么当使用 VPD 、 Context 或 On 登录触发器时,他们在 Apex 中的问题是什么?
在 Apex 中执行此操作的正确方法是使用应用程序安全设置的 VPD 属性:
Shared Components > Edit Security Attributes > Security
有一个部分标记为“虚拟专用数据库 PL/SQL 调用以设置安全上下文”(或类似的内容),将您的代码放在那里设置 VPD 上下文。它由 Apex 引擎针对每个页面视图执行。
可能与执行登录触发器的时间有关。
通常,Web 应用程序(包括 Apex)不会为每个连接到应用程序的用户提供数据库会话。相反,它将有一个数据库会话池(可能有 10 个),并在最终用户发出数据库请求时使用其中的任何一个。
哪个数据库用户用于登录以及可能使用多少会话都应该是可配置的,具体取决于您实施 Apex 的方式(嵌入式 PL/SQL 网关、Apex 侦听器或 Oracle HTTP 服务器)
简而言之,登录触发器可能是设置 CONTEXT 变量的错误位置。