2015-09-23 73 views
0

我有表M_StockCode_JB。它的字段是Code,DescriptionDisplayOracle觸發器更新列在同一個表

顯示仍然是空的,但是代碼和說明具有值如下:

M_StockCode_JB 
----------------------- 
Code | Description 
1  | Apple 
2  | Banana 
3  | Pinneaple 

我想添加一個名爲「顯示」包含從代碼和說明兩個數據列,我打算使用這個SQL SELECT "NAME" ||'-' || DESCRIPTION FROM M_STOCKCODE_JB所以它會產生這樣的:

   M_StockCode_JB 
    ------------------------------------------ 
    Code | Description | Display 
    1  | Apple   | 1-Apple 
    2  | Banana   | 2-Banana 
    3  | Pineapple  | 3-Pineapple 

我怎樣才能插入到顯示列,因爲我加列代碼和說明?

+0

我可以kn ow你使用的是什麼版本的oracle? – Buddi

+0

@Tarun我正在使用Oracle 12c –

回答

2

如果您的顯示器列八方通只包含"NAME" ||'-' || DESCRIPTION,並且使用的是Oracle 11g或更高版本,您可以創建虛擬列

ALTER TABLE M_StockCode_JB ADD (Display AS (NAME ||'-' || DESCRIPTION)) 

在任何版本中,你可以創建視圖

CREATE OR REPLACE VIEW V_M_StockCode_JB AS 
SELECT "NAME" ||'-' || DESCRIPTION FROM M_STOCKCODE_JB 

如果列需要更新,那麼你需要真正的列與觸發器

ALTER TABLE M_StockCode_JB ADD (Display VARCHAR2(4000)); 
CREATE OR REPLACE TRIGGER M_StockCode_JB_trig 
    BEFORE 
    INSERT ON M_StockCode_JB 
    FOR EACH ROW  
BEGIN 
    :new.Display = :new.NAME ||'-' || :new.DESCRIPTION; 
END; 
/
+0

非常感謝你的工作:) –

相關問題