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