繁体   English   中英

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

[英]Oracle Apex: How do I tell Apex to use the value from a column of another table?

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

例如,我有一个表“ customer”,其中的“ member”列下表示是或否。

我希望每当为表“ order”输入新的数据行时,也具有“ member”列的表“ order”会自动从表“ customer”的“ member”列中获取值。

我是否在“约束”下执行此操作,因为当我尝试创建成员列的外键时,它总是给我一个错误。

我要在“触发器”下执行此操作吗?

请理解,我对代码不太了解。 当有人说类似

COMMAND table1 s(无论是哪种命令);

我不知道“ s”是什么意思。 而且我敢肯定,还有很多其他我也不十分了解的东西。 我已经介绍过MySQL,但是它显然与Apex Oracle有一些区别。

谢谢。

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

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

坦白说,如果您想做一些事情,那么您需要阅读一些书,以学习如何编写适当的触发器。

假设您将构建一个Apex应用程序来输入订单,另一种方法是让相关页面在加载时(可能是隐藏的页面项中)从customer那里查询必要的信息,然后将其包含在insert语句中。

同样,如果您不知道如何执行此操作,则如果打算使用Apex完成任何有用的操作,则需要做一些研究。

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

但是,外键适用于该字段, order标识特定的客户。

您需要主从页面。 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链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM