Oracle多用户应用程序登台表-在APEX中



我正在开发一个应用程序,它接受一些原始输入数据并将其转换为在一系列步骤中计算最终结果。在每一个步骤中,都有可能的用户输入(例如,权重、选择相关行等)。我已经设置了基本的分析,但我的目标是将其部署到多用户环境中。我不希望发生的是,一个用户设置了他们的输入,另一个用户更改了一些输入,两者都得到了意想不到的结果。

当用户进入应用程序时,我希望他们在开始会话时获得所有主数据库表的副本,然后能够更改所有输入(甚至可能添加原始数据),运行分析并生成与所有其他用户的输出分开的输出。该输出可以导出到Excel,也可以在以后的日期取出。然后,如果用户想要对实际的数据库表进行更改(所有其他用户都将看到),他们可以提交部分或全部更改。

我是一个Oracle和APEX的新手,我已经阅读了我能找到的所有文档和书籍,但是需要帮助确定解决这个问题的好方法,或者至少是相关的阅读。

我认为你必须使用APEX集合。

看http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35127/apex_collection.htm

乌利希期刊指南:

你必须寻找顶点集合。首先:当用户登录时,为想要更改的每个表创建一个空的apex集合。集合名称必须像相应的表一样命名。然后,您可以为每个集合创建如下视图(让表名为"tmp_tab"):

create or replace view tmp_v as
select
  t.c001 as id
, t.c002 as column1
, t.c003 as column2
 from apex_collections t
 where collection_name = 'tmp_tab';

然后在表tmp_tab的每个报告中,将该表与相应集合上的视图连接起来。报告代码看起来像这样:

select
  t.id
, nvl(v.column1, t.column1) column1
, nvl(v.column2, t.column2) column2
 from tmp_tab t
 left join tmp_v v on v.id = t.id

当用户编辑数据时,将该数据保存在collection中,而不是table中。在完成所有更改后,如果用户希望保存所有用户的数据,请将数据从相应的集合移到表中。这种方法是最正确的,并且您不需要更改数据模型。

最新更新