2

如果该值已经有一个条目,如何使用触发器将列值更新为旧值加上其他表中的新值?我想要的是类似下面的东西。注意粗体和斜体部分。

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;
4

2 回答 2

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;
于 2013-08-07T17:55:27.747 回答
0

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

于 2013-08-07T17:51:43.760 回答