单击 Oracle Application Express 按钮将值插入 2 个表
Posted
技术标签:
【中文标题】单击 Oracle Application Express 按钮将值插入 2 个表【英文标题】:Insert value into 2 tables on button click on Oracle Application Express 【发布时间】:2012-12-05 23:10:29 【问题描述】:所以基本上在我的数据库中,我有一个存储作业应用程序的表。这些应用程序具有用户将能够从下拉菜单更改为例如被邀请参加面试或申请成功的状态。我还有一个表需要存储每个应用程序的状态何时更改以及更改为什么。我想要这样做的方式是,我在 Oracle Application Express 上有一个显示某人应用程序的表单。然后,他们可以单击编辑按钮来更改其状态。当按下提交按钮时,我希望它更新应用程序表中的状态,但还要在历史表中创建一个新条目,其中包含状态更改为的值以及更改日期。我会为此使用触发器还是在 Oracle Application Express 上有另一种方法。对此的任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:你可以做任何一个。哪个合适取决于您的情况。
如果历史表只是一个日志表,它记录了对应用程序表的所有更改,我会对插入历史表的应用程序表上的一个简单触发器感到满意。但是,您需要检查您的环境中是否允许使用触发器(某些 DBA 不喜欢它们)。缺点是触发器可以被禁用——这意味着你的历史表不会被更新,你的应用程序不会意识到它不工作——用户不会得到任何错误。优点是无论哪个应用程序正在更新应用程序表,无论是 Apex 还是其他客户端,都将维护历史记录表。
您可以拥有一个或多个在提交页面时运行的 PL/SQL 进程,并且您可以将任意 PL/SQL 放入其中 - 例如更新应用程序状态,然后插入历史记录表。这样做的好处是代码要么成功运行,要么因错误而失败,因此您知道历史记录将与应用程序表同步。这样做的缺点是逻辑是在您的前端代码中编码的;如果您的公司决定编写另一个更新应用程序表的接口,则可能不会插入历史记录(或未以相同方式插入)。
为应用程序状态更改编写一个包装程序,该程序执行这两项操作;并从 Apex PL/SQL 进程中调用此过程。这样,该过程可以被其他系统重复使用(如果需要的话)。
【讨论】:
以上是关于单击 Oracle Application Express 按钮将值插入 2 个表的主要内容,如果未能解决你的问题,请参考以下文章