CREATE OR REPLACE TRIGGER BEFORE_UPD_FORECAST_CARE_AREA(触发器名)
BEFORE UPDATE OR INSERT (编辑和新增时触发) ON MPC_FORECAST(被监听的表名)
FOR EACH ROW
BEGIN
SELECT
(CASE
WHEN
(SELECT COUNT(1) FROM MPC_MODALITY_CROSS b WHERE b.PRODUCT_ID = :NEW.PRODUCT_ID) = 1 THEN 'PO-PoC'
ELSE :NEW.CARE_AREA(代表表中当前的字段值)
END) CARE_AREA
INTO :new.CARE_AREA
FROM
dual;
END;
此触发器是新增或修改MPC_FORECAST表时将CARE_AREA字段按照case when的逻辑修改并插入表中
注:NVL()等同于MYSQL中的IFNULL()
其中begin中的可以替换为(同等)
BEGIN
SELECT NVL((
SELECT
(CASE
WHEN c.PRODUCT_ID is not NULL THEN 'PO-PoC'
ELSE :NEW.CARE_AREA
END) CARE_AREA
FROM
MPC_MODALITY_CROSS c
WHERE c.PRODUCT_ID = :NEW.PRODUCT_ID
AND ROWNUM = 1),'') INTO :new.CARE_AREA from dual;
END;