如何使用Trigger将列值更新为旧值加上另一个表的新值?

时间:2013-08-07 17:45:49

标签: mysql sql triggers sql-update

如果该值已经有条目,如何使用Trigger将列值更新为旧值加上来自其他表的新值? 我想要的是以下内容。注意粗体和斜体部分。

DELIMITER$$
CREATE TRIGGER trigger_name AFTER INSERT
ON table_one FOR EACH ROW
BEGIN
  INSERT INTO table_two(clmn_id, clmn_one) VALUES(NEW.clmn_id_fk,NEW.clmn_a)
  ON DUPLICATE KEY UPDATE clmn_one = VALUES(clmn_one + NEW.clmn_a);
END$$
DELIMITER;

2 个答案:

答案 0 :(得分:3)

尝试从ON DUPLICATE KEY中删除关键字VALUES:

DELIMITER$$
CREATE TRIGGER trigger_name AFTER INSERT
ON table_one FOR EACH ROW
BEGIN
  INSERT INTO table_two(clmn_id, clmn_one) VALUES(NEW.clmn_id_fk,NEW.clmn_a)
  ON DUPLICATE KEY UPDATE fine_amount = clmn_one + NEW.clmn_a;
END$$
DELIMITER;

答案 1 :(得分:0)

首先看起来你需要一个select语句来检查它是否已经存在。如果是这样,请将变量设置为当前值,然后运行组合旧值(变量)和新值的更新。如果该记录尚不存在,请使用当前值运行insert语句。