2012-02-11 27 views
0

假设我想在一个更新的两列对重复声明:MySQL在DUPLICATE UPDATE错误 - 计算与多个列

INSERT INTO `daily_lead_rollups` (`year`, `month`, `day`, `a_id`, `f_id`, `0_d`,`0_r`) VALUES (NEW.year,NEW.month,NEW.day,NEW.a_id,NEW.f_id, 1,NEW.payout) ON DUPLICATE KEY UPDATE 0_d = 0_d + 1, 0_r =0_r + NEW.payout; 

错误:

1235 - 该版本的MySQL还不支持'多个触发器具有相同的动作时间和一个表的事件'

我知道你可以插入多行,但我没有找到任何有关使用计算更新多列的内容。

MySQL是细跟一个计算,即使没有

VALUES

,但是有一个问题,有两个!

我改正了陈述以备将来参考,问题解决了。

回答

2

我不明白为什么你试图VALUES这样,但我怀疑你的意思是这样的:

ON DUPLICATE KEY UPDATE 
    0_d = 0_d + 1, 
    0_r = 0_r + NEW.payout 

还有如何在manual对重复密钥更新使用一些很好的例子。

+0

是的,这就是我的意思,但它似乎还没有工作(得到相同的错误)。最初我只是0_d = 0_d + 1。我会再次看看手册... – Len 2012-02-11 01:00:21

+0

@Len:你确定问题不完全是错误信息说:你正试图创建一个触发器表已经有一个? – 2012-02-11 01:06:29

+0

这个触发器实际上是自动生成的,具有多组小时累加器,基于另一个依赖关系和另一个依赖关系......你是绝对正确的 - 我在drop trigger语句中关闭了一个字母....有时你看不到12小时后显而易见! – Len 2012-02-11 01:17:25