[英]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 Columns
: Table/View name
- customer
, Select Columns
-选择用户要编辑的表customer
所需的列。 Detail Table and Columns
: Table / View Name
- order
, Select Columns
-选择所需的表order
列。 Define Primary Key
:为两个表选择主键(或使用选项Managed by ROWID
) Primary Key
-我建议使用先前创建的序列(转到“ Object Browser
)。 在所有其他步骤中,您可以默认选择值。 完成此步骤后,您将获得两页(或三页,具体取决于您在向导中选择的页面)。 一页允许用户更改表customer
数据,第二页允许按表order
更改数据,并且该数据将自动与表customer
链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.