在Oracle Application Express上单击按钮时将值插入2个表中

时间:2012-12-05 23:10:29

标签: sql oracle oracle-apex

所以基本上在我的数据库中,我有一个存储作业应用程序的表。这些应用程序的状态是用户可以从下拉菜单更改为例如受邀访问或应用程序成功。我还有一个表,当每个应用程序的状态发生变化以及它被更改为什么时,需要存储该表。我想这样做的方式是我在Oracle Application Express上有一个显示某些应用程序的表单。然后,他们可以单击编辑按钮来更改其状态。当按下提交按钮时,我希望它更新应用程序表中的状态,但还要在历史记录表中创建一个新条目,其中状态已更改为值以及更改它的日期。我是否会使用触发器,或者是否有另一种方法可以在Oracle Application Express上使用它。对此有任何帮助将非常感激。

1 个答案:

答案 0 :(得分:1)

你可以做任何一件事。哪个合适取决于你的情况。

  1. 如果历史表只是一个记录应用程序表所有更改的日志表,我会对插入到历史记录表中的应用程序表上的简单触发器感到满意。但是,您需要检查环境中是否允许触发器(某些DBA不喜欢它们)。缺点是可以禁用触发器 - 这意味着您的历史记录表不会更新,并且您的应用程序将无法意识到它不起作用 - 用户将不会收到任何错误。优点是无论哪个应用程序正在更新应用程序表 - 无论是Apex还是其他客户端,都将维护历史表。

  2. 您可以拥有一个或多个PL / SQL进程,这些进程在提交页面时运行,您可以在其中放置任意PL / SQL - 例如更新应用程序状态,然后插入历史记录表。这样做的好处是代码将成功运行,或者因错误而失败,因此您知道历史记录将与应用程序表同步。这样做的缺点是逻辑在您的前端代码中编码,就像它一样;如果您的公司决定编写另一个更新应用程序表的界面,则可能不会插入历史记录(或者不会以相同的方式插入历史记录)。

  3. 为应用程序状态更改编写一个包装程序,它执行这两个操作;并从Apex PL / SQL进程调用此过程。这样,该过程可以被其他系统重用(如果需要的话)。