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

字段修改时自动邮件通知:跟踪表中免税状态变更及操作人

实现方案

完全可以实现,结合你现有的查询基础,有两种可落地的路径,优先推荐第一种:

方案1:数据库触发器+审计表+内置邮件推送(实时无遗漏)

这个方案直接在数据库层捕获变更,不会因为应用层逻辑绕过导致漏记:

  • 第一步先创建独立的变更审计表,专门存Tax Exempt status(对应你表中的job_taxable_indicator字段)的修改记录,表结构参考:
CREATE TABLE JOB_TAX_STATUS_CHANGE_AUDIT (
    AUDIT_ID BIGINT IDENTITY(1,1) PRIMARY KEY,
    JOB_JOB_ID BIGINT NOT NULL,
    OLD_TAXABLE_INDICATOR VARCHAR(50),
    NEW_TAXABLE_INDICATOR VARCHAR(50) NOT NULL,
    OPERATOR_USER_ID VARCHAR(50) NOT NULL,
    OPERATOR_USER_NAME VARCHAR(100) NOT NULL,
    CHANGE_TIME DATETIME NOT NULL DEFAULT GETDATE(),
    OPERATE_IP VARCHAR(50)
);
  • 第二步创建更新触发器,仅当job_taxable_indicator字段发生变更时触发,自动写入审计记录同时触发邮件发送:
-- 不同数据库语法略有差异,以下为通用逻辑示例
CREATE TRIGGER TRG_TAX_STATUS_CHANGE
ON BI50_JOB_COST_V1
AFTER UPDATE
AS
BEGIN
    -- 仅当免税状态字段变更时执行逻辑
    IF UPDATE(job_taxable_indicator)
    BEGIN
        -- 写入审计表
        INSERT INTO JOB_TAX_STATUS_CHANGE_AUDIT (
            JOB_JOB_ID, OLD_TAXABLE_INDICATOR, NEW_TAXABLE_INDICATOR,
            OPERATOR_USER_ID, OPERATOR_USER_NAME, CHANGE_TIME
        )
        SELECT 
            d.JOB_JOB_ID,
            d.job_taxable_indicator AS OLD_TAXABLE_INDICATOR,
            i.job_taxable_indicator AS NEW_TAXABLE_INDICATOR,
            i.SEC_USER_ID,
            i.SEC_USER_NAME,
            i.act_CREATION_DATE
        FROM deleted d
        JOIN inserted i ON d.JOB_JOB_ID = i.JOB_JOB_ID
        WHERE d.job_taxable_indicator <> i.job_taxable_indicator;

        -- 调用数据库内置邮件存储过程,把上述变更内容拼接为邮件正文,发送给指定告警接收人
        -- 不同数据库邮件存储过程不同,SQL Server用sp_send_dbmail,MySQL用自定义UDF调用邮件接口即可
    END
END

方案2:定时轮询比对(适合无数据库高权限场景)

如果你没有建触发器、配置数据库邮件的权限,可以基于你现有的SELECT语句改造实现:

  • 先创建一张快照表,存当前所有作业的最新job_taxable_indicator值、对应操作人、更新时间作为比对基线
  • 配置定时任务(比如每5分钟执行一次),跑你写的查询逻辑拉取最新数据,和快照表做关联比对:
    • 筛选出同一个JOB_JOB_ID下job_taxable_indicator值和快照不一致的记录,即为发生变更的条目
    • 提取变更前后值、操作人ID、操作人姓名、变更时间,调用内部邮件接口发送通知
    • 执行完成后把最新数据更新到快照表,作为下一轮比对的基线
  • 注意你当前写的SQL加了DISTINCT可能会丢失短时间内重复修改的记录,正式使用时要去掉,保留全量变更轨迹

方案注意点

  • 触发器方案实时性最高,没有捕获延迟,也不会漏记绕过应用层的数据库直连修改,优先选择
  • 轮询方案存在轮询间隔的告警延迟,如果两次轮询之间字段被修改后又改回原值,会无法捕获该次操作
  • 邮件通知需要明确标注变更作业ID、新旧状态值、操作人信息、精确操作时间,方便后续核对追责

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:21:23