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

如何用触发器将moneyincome表数据同步至availablecash表(覆盖/累加)

嘿,这个需求用数据库触发器就能轻松搞定!我分两种处理方式给你写具体的实现代码,默认用MySQL语法(如果是其他数据库,比如PostgreSQL/SQL Server,语法稍作调整就行):

方式一:覆盖替换availablecash的现有值

这个逻辑会把availablecash里的money直接替换成你插入到moneyincome的新值。根据你的表关联逻辑,分两种场景实现:

DELIMITER //
CREATE TRIGGER sync_money_override AFTER INSERT ON moneyincome
FOR EACH ROW
BEGIN
    -- 场景1:availablecash只有单条记录(比如存全局总可用现金)
    UPDATE availablecash 
    SET money = NEW.money;

    -- 场景2:按code关联更新(比如availablecash的code与插入的moneyincome的code一一对应),替换成下面的代码:
    -- UPDATE availablecash 
    -- SET money = NEW.money
    -- WHERE code = NEW.code;
END //
DELIMITER ;
方式二:将新值累加到现有值上

这个逻辑会把新插入的money值加到availablecash已有的money字段里,实现累加效果:

DELIMITER //
CREATE TRIGGER sync_money_add AFTER INSERT ON moneyincome
FOR EACH ROW
BEGIN
    -- 场景1:单条记录累加
    UPDATE availablecash 
    SET money = money + NEW.money;

    -- 场景2:按code关联累加,替换成下面的代码:
    -- UPDATE availablecash 
    SET money = money + NEW.money
    -- WHERE code = NEW.code;
END //
DELIMITER ;

额外补充:处理availablecash无对应记录的情况

如果availablecash里可能没有对应code的记录,你可以用INSERT ... ON DUPLICATE KEY UPDATE实现“无则插入,有则更新”的逻辑,前提是availablecash的code字段是唯一键(主键或唯一约束):

累加版本

DELIMITER //
CREATE TRIGGER sync_money_add_or_insert AFTER INSERT ON moneyincome
FOR EACH ROW
BEGIN
    INSERT INTO availablecash (code, money)
    VALUES (NEW.code, NEW.money)
    ON DUPLICATE KEY UPDATE money = money + NEW.money;
END //
DELIMITER ;

覆盖版本

DELIMITER //
CREATE TRIGGER sync_money_override_or_insert AFTER INSERT ON moneyincome
FOR EACH ROW
BEGIN
    INSERT INTO availablecash (code, money)
    VALUES (NEW.code, NEW.money)
    ON DUPLICATE KEY UPDATE money = NEW.money;
END //
DELIMITER ;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:28:00