You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在M_TAX_ORG表NAME_R列更新时自动同步M_TAX_ORG_ADM_INFO表同列

问题分析与解决方案

原触发器的问题

你的触发器存在几个关键错误:

  • 触发器中查询M_TAX_ORG的WHERE条件写法混乱,跨表关联逻辑错误,且行级触发器里应直接用:NEW/:OLD伪记录获取当前更新行的数据,无需额外查询原表。
  • UPDATE语句的WHERE EXISTS子句冗余,且逻辑会更新所有与M_TAX_ORG关联的行,而非仅当前更新行对应的M_TAX_ORG_ADM_INFO记录。
  • 额外声明的v_NAME_R变量完全多余,直接使用:NEW.NAME_R即可获取更新后的NAME_R值。

正确的触发器实现

以下是修正后的脚本,仅在M_TAX_ORG的NAME_R列被更新时,同步更新关联的M_TAX_ORG_ADM_INFO表对应行的NAME_R:

CREATE OR REPLACE TRIGGER M_TAX_ORG_SYNC_NAME_R
    AFTER UPDATE OF NAME_R
    ON M_TAX_ORG
    FOR EACH ROW
BEGIN
    -- 精准更新当前触发行对应的关联记录
    UPDATE M_TAX_ORG_ADM_INFO
    SET NAME_R = :NEW.NAME_R
    WHERE M_TAX_ORG_ID = :NEW.M_TAX_ORG_ID;
END;
/

关键优化点说明

  • 使用AFTER UPDATE OF NAME_R替代AFTER UPDATE,仅在NAME_R列被修改时触发触发器,避免不必要的执行。
  • 利用:NEW.M_TAX_ORG_ID获取当前更新行的主键,精准定位M_TAX_ORG_ADM_INFO中对应的关联记录。
  • 直接用:NEW.NAME_R赋值,无需额外查询,提升效率并避免逻辑错误。

内容的提问来源于stack exchange,提问作者Amir Okay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 09:55:23