Oracle Apex:我如何告诉Apex使用另一个表的列中的值?

时间:2015-04-07 18:07:22

标签: oracle oracle-apex

首先,我们不使用代码。我们正在使用Apex GUI来设置数据库。我需要一个表的列来从另一个表的列中获取值。如果它是我必须创建的触发器,那么它可能需要代码。

例如,我有一张桌子"客户"其中有"成员"列a是或否。

我想要桌子"命令"还有一个"成员"列自动获取表格中的值""""成员"每当为表格#34;订单输入新的数据行时,列。"

我是否在"约束下做到了,"因为当我尝试创建成员列的外键时,它会一直给我一个错误。

我是否在"触发器下执行此操作?"

请理解,我不太了解代码。当有人说出像

这样的话

COMMAND table1 (   无论什么命令 );

我不知道" s"是为了。而且我很确定还有很多其他我不太了解的东西。我已经介绍过MySQL,但它显然与Apex Oracle存在一些差异。

谢谢。

2 个答案:

答案 0 :(得分:0)

触发器是一种方法。假设order表包含一个customer_id列或类似的标识客户的列,您将创建一个前插入,每行触发器,其中包含如下语句:

SELECT customer.member INTO :new.member
FROM customer WHERE customer.customer_id = :new.customer_id

坦率地说,如果这是你想做的事情,你需要做一些阅读来学习如何编写正确的触发器。

假设您将构建一个Apex应用程序来输入订单,另一种方法是让相关页面在加载时({1}}加载(可能是隐藏的页面项目)时查询必要的信息,然后将它们包含在插入声明。

同样,如果您不知道如何做到这一点,如果您打算使用Apex来完成任何有用的事情,您需要做一些研究。

这里的外键不合适。外键引用的列必须是唯一的;由于customer只有两个值,因此许多客户将拥有相同的值,因此它不是唯一的字段。

然而,外键适用于member中标识特定客户的字段。

答案 1 :(得分:0)

您需要Master-Detail页面。按Create page - > Form - > Master Detail Form,然后选择:

  • 步骤Master Table and ColumnsTable/View name - customerSelect Columns - 选择用户将要修改的表格customer的所需列。
  • 步骤Detail Table and ColumnsTable / View Name - orderSelect Columns - 选择表order所需的列。
  • 步骤Define Primary Key:为两个表选择主键(或使用选项Managed by ROWID
  • 步骤Primary Key - 我建议使用以前创建的序列(转到Object Browser)。

在所有其他步骤中,您可以默认选择值。完成此步骤后,您将有两个页面(或三个页面,具体取决于您在向导中的选择)。一个页面允许用户更改表customer中的数据,第二个 - 更改表order中的数据,此数据将自动与表customer链接。