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

SQLite Trigger执行时更新全表而非仅指定选中行的问题

触发器仅更新目标行修复方案

问题根因

  • 你现有触发器中的UPDATE语句未加行过滤条件,触发时会修改TableA所有行的Col2值
  • 注意你需求中描述的判断字段为Col1,现有代码中判断的是date_back,后续调整时需和实际字段名保持一致

推荐修复方案(使用BEFORE UPDATE触发器,更简洁高效)

无需额外写UPDATE语句,直接修改当前触发行的新值即可:

CREATE TRIGGER trigger1 
BEFORE UPDATE
ON TableA
WHEN NEW.Col1 IS NOT NULL
AND OLD.Col1 IS NULL  
BEGIN 
    SET NEW.Col2 = 11;
END;

若需保留AFTER UPDATE触发器的写法

必须添加主键匹配条件,仅修改当前触发的行,假设TableA的主键字段为id:

CREATE TRIGGER trigger1 
AFTER UPDATE
ON TableA
WHEN NEW.Col1 IS NOT NULL
AND OLD.Col1 IS NULL  
BEGIN 
    UPDATE TableA 
    SET Col2 = 11
    WHERE id = OLD.id;
END;

注意事项

  • 如果实际判断的字段是date_back,将上述代码中的Col1替换为date_back即可
  • 若表的主键字段不是id,替换为实际的主键字段名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:39:05