[英]How to update column uniquely for each row, in Oracle Apex 5?
我創建的列基本上是其他列的串聯。 我想要做的是使用來自用戶當前正在填寫的表格的信息來更新自身。 但是,現在它只是使用最近的行(表中的記錄)自我更新,不僅是此列(ID)中的所有行都是相同的(所有行都基於最近的行)。
DECLARE
ID VARCHAR2(40);
BEGIN
SELECT NEW_ID
INTO ID
FROM (SELECT YEAR || '-' || COL2|| PRIMKEY as NEW_ID
FROM TABLE
ORDER BY MAIN_ID DESC)
WHERE ROWNUM = 1;
RETURN ID;
END;
因此,對於第1、2、3行,我希望ID為17-A1、17-B2和17-C3。 但它們的所有ID行均為17-C3。 如果我添加一條記錄(第4行),則所有ID行將變為17-D4。
您可以使用11g虛擬列語法在數據庫中完成此操作,而不必使用Apex。
alter table t23
add new_id as (YEAR || '-' || COL2|| PRIMKEY )
;
當您插入一行時,此列將自動填充。 如果您的應用程序更新了這三列中的任何一列,它將自動維護。 它不能被覆蓋。
這種方法的關鍵(優勢!)優勢在於,用於維護NEW_ID的邏輯存在於表聲明的一個位置,並且在表已填充的情況下仍然適用。 缺點是我們不能在INSERT語句中包括該列,因此必須始終使用顯式的投影來指定它們: insert into t23 (year, col2, primkey) values (....
,但是無論如何這都是一種好習慣,因此不是主要缺點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.