我有这样的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。
答案 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:)它应该可以工作,我实际上是在我自己的一个表上测试它只是为了确定。这种触发器有时变幻无常:)