簡體   English   中英

如何在Oracle Apex 5中為每一行唯一地更新列?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM