MySQL触发器转换

时间:2012-02-17 11:25:12

标签: mysql sql triggers

我有这样的SqLite触发器:

CREATE TRIGGER update_rating AFTER UPDATE ON gameServers 
FOR EACH ROW BEGIN UPDATE gameServers 
SET rated_order=NEW.rating || '#' || NEW._address 
WHERE rowid=NEW.rowid; END;

请帮我转换成MySQL。

1 个答案:

答案 0 :(得分:1)

CREATE TRIGGER update_rating BEFORE UPDATE ON gameServers
FOR EACH ROW SET NEW.rated_order=CONCAT(NEW.rating,' # ',NEW.address);

OF COURSE - 这不会导致INSERT ...(!)

请注意,我将它从AFTER更改为BEFORE(非常刻意):除了问题为什么我应该在触发触发器之后开始另一个UPDATE时,问题是Updating table in trigger after update on the same table 你的AFTER触发器中的(完整)“UPDATE”语句会导致循环触发器调用触发器调用触发器......(mysql会通过拒绝该语句来防止)

编辑:起初我想使用'||'对于字符串连接也是如此,但这是MySQL而不是Oracle:)

它应该可以工作,我实际上是在我自己的一个表上测试它只是为了确定。这种触发器有时变幻无常:)