我一直在我的 Oracle Apex 页面之一中使用基于自定义事件的动态操作。我将我的事件绑定到文档,然后使用“DOM 对象”选择类型(文档的)来指定事件的上下文。
这适用于 Apex 4.2,但是我刚刚遇到了与 Apex 5 相关的问题:
https://docs.oracle.com/cd/E59726_01/doc.50/e39143/toc.htm#BAJDAGJG
5.10 弃用基于 DOM 对象的动态动作
基于 DOM 对象的动态操作已被弃用。更改您的动态操作以使用 jQuery 选择器或 JavaScript 表达式而不是 DOM 对象。
我的问题是,如何使用 jQuery 选择器来检测绑定到文档的事件?当我尝试使用 jQuery 选择器时document,不会触发动态操作。我强烈怀疑这是因为 APEX 在解析动态操作时将选择器用引号括起来,使其对文档或窗口对象上的选择器无用。
我已经知道在标准的 jQuery 世界中,我只会使用$(document).

我已经知道我可以将事件绑定到不同的 DOM 元素。我对此不感兴趣。我对绑定到文档特别感兴趣。
在插入乘客表后尝试触发触发器时,我会收到此错误。此触发器应该调用一个过程,该过程采用新插入值的两个参数,并基于此更新另一个表,即预订表。但是,我收到此错误:
ORA-04091: table AIRLINESYSTEM.PASSENGER is mutating, trigger/function may not see it
ORA-06512: at "AIRLINESYSTEM.CALCULATE_FLIGHT_PRICE", line 11 ORA-06512: at
"AIRLINESYSTEM.CALCULATE_FLIGHT_PRICE", line 15 ORA-06512: at
"AIRLINESYSTEM.CALCULATE_FLIGHT_PRICE_T1", line 3 ORA-04088: error during execution of
trigger 'AIRLINESYSTEM.CALCULATE_FLIGHT_PRICE_T1' (Row 3)
Run Code Online (Sandbox Code Playgroud)
我在 SQL 命令行中编译并测试了该过程,它工作正常。问题似乎出在触发器上。这是触发代码:
create or replace trigger "CALCULATE_FLIGHT_PRICE_T1"
AFTER
insert on "PASSENGER"
for each row
begin
CALCULATE_FLIGHT_PRICE(:NEW.BOOKING_ID);
end;?????
Run Code Online (Sandbox Code Playgroud)
为什么触发器不调用过程?