[英]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.