Orcal触发器

此篇博客介绍了如何创建一个MySQL触发器,在MPC_FORECAST表的新增或修改操作时,根据MPC_MODALITY_CROSS表的PRODUCT_ID条件,自动设置CARE_AREA字段。通过CASE WHEN语句实现'PO-PoC'规则,确保数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值