Sql 同一表中的Oracle触发器更新列

Sql 同一表中的Oracle触发器更新列,sql,oracle,triggers,Sql,Oracle,Triggers,我有一个名为M\u StockCode\u JB的表。其字段为code、Description和Display 显示仍然为空,但代码和说明的值如下所示: M_StockCode_JB ----------------------- Code | Description 1 | Apple 2 | Banana 3 | Pinneaple 我想添加一个名为“Display”的列,该列包含来自代码和描述的数据,我计划使用此SQL从M|U

我有一个名为
M\u StockCode\u JB
的表。其字段为
code
Description
Display

显示仍然为空,但代码和说明的值如下所示:

  M_StockCode_JB
-----------------------
Code    |   Description
1       |   Apple
2       |   Banana
3       |   Pinneaple
我想添加一个名为“Display”的列,该列包含来自代码和描述的数据,我计划使用此SQL从M|U STOCKCODE_JB中选择“NAME”| | | Description,因此它将如下生成:

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

如何在添加列代码和说明时插入以显示列

如果您的显示列始终只包含
“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;
/

我可以知道你使用的是什么版本的oracle吗?@Tarun我使用的是oracle 12c