0

我想从不在相关数据表中的触发器访问额外的页面项目值。例如,我有一个如下表,

      Employee
----------------------

empId | fName | lName 
----------------------
1     | John  | Doe
----------------------
2     | Jane  | Doe 

Apex 表单项将像,

P500_EMPID, P500_FNAME, P500_LNAME

我有一个额外的页面项目P500_SOMEIDS,它是一个多选列表。我想After Insert在表的触发器中访问那些选定的值Employee。我尝试将此项目添加到“要提交的页面项目”中。但我不知道如何在该触发器中访问它。可能吗..?如何..?

4

2 回答 2

2

在处理表更新的页面进程中(这将是“表单 - 自动行处理(DML)”类型的进程,在“设置”下有一个属性“插入后返回主键”。如果是设置为“On”,则插入语句会将插入行的值返回到定义为主键的页面项中。例如:

  • 在 emp 上创建表单
  • 将 P1_EMPNO 设为主键页面项
  • 假设您创建了一个新行,并且该 empno 值为 1000。然后在运行自动行处理页面进程后,将 P1_EMPNO 的值设置为 1000。

如果您想将行插入到引用新创建的 empno 的另一个表中,那么您可以创建一个pl/sql 类型的页面进程(在行处理之后执行)代码,如下所示:

BEGIN
  INSERT INTO some_other_table (empno) VALUES (:P1_EMPNO); 
END;

应尽可能避免为业务功能使用触发器。

于 2020-06-23T07:21:35.377 回答
1

代替数据库触发器,使用将执行相同工作的存储过程。传递您想要的任意数量的参数(包括P500_SOMEIDS项目)。

于 2020-06-23T05:52:37.947 回答