Oracle触发器使用case语句创建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle触发器使用case语句创建相关的知识,希望对你有一定的参考价值。
我在oracle中创建触发器时遇到问题,我有一个表“ stock”。我有字段“ xxx”,“ yyy”和“ zzz”。我想创建一个触发器,可以在插入或更新后立即填充此“股票”表上的另一个字段。我已经有点累了,但是我不能。
create or replace
Trigger Connector_Stock_Trg
AFTER INSERT OR UPDATE OF xxx,yyy,zzz ON STOCK
For Each Row
Declare
L_Temp VARCHAR2(64);
BEGIN
L_Temp := Case
When Xxx Is Not Null Then Xxx
When yyy Is Not Null And zzz Is Not Null Then yyy||'_'||zzz
When Yyy Is Null And zzz Is Not Null Then zzz
WHEN zzz IS NULL AND yyy IS NOT NULL THEN yyy
END;
Update Stock
SET CONNECTOR=L_Temp;
END;
答案
您不必更新表STOCK
,而只需按以下方式向:NEW.CONNECTOR
分配一个表达式。
CREATE OR REPLACE TRIGGER CONNECTOR_STOCK_TRG AFTER
INSERT OR UPDATE OF XXX, YYY, ZZZ ON STOCK
FOR EACH ROW
--DECLARE
-- L_TEMP VARCHAR2(64);
BEGIN
:NEW.CONNECTOR := -- USE :NEW
CASE
WHEN XXX IS NOT NULL THEN XXX
WHEN YYY IS NOT NULL AND ZZZ IS NOT NULL THEN YYY
|| '_'
|| ZZZ
WHEN YYY IS NULL AND ZZZ IS NOT NULL THEN ZZZ
WHEN ZZZ IS NULL AND YYY IS NOT NULL THEN YYY
END;
-- UPDATE STOCK
-- SET
-- CONNECTOR = L_TEMP;
END;
/
干杯!
以上是关于Oracle触发器使用case语句创建的主要内容,如果未能解决你的问题,请参考以下文章
Oracle 创建触发器语句失败,内部错误代码 ORA-00600