MySQL触发器转换

MySQL触发器转换,mysql,sql,triggers,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 CREATE TRIGGER update_rating BEFORE UPDATE

我有这样的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

CREATE TRIGGER update_rating BEFORE UPDATE ON gameServers
FOR EACH ROW SET NEW.rated_order=CONCAT(NEW.rating,' # ',NEW.address);
当然-这在插入时不起任何作用…(!)

请注意,我将它从AFTER改为BEFORE(相当有意):除了为什么我应该在触发触发器的更新之后启动另一个更新之外,还有一个问题 AFTER触发器中的(完整)“UPDATE”语句将导致循环触发器调用触发器。。。(mysql会通过拒绝声明来阻止这一点)

编辑:起初我想用“| |”来连接字符串,但这是MySQL而不是Oracle:)


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

另一方面,请注意:(除了在mysql触发器中调用触发器的行之外,不可能操作其他行)。不是你的问题(现在),但也许以后。。。还有一些很好的例子。它会起作用,因为在修改之前更改记录会有帮助。@Mörre关于连接运算符| | |,你是正确的,但是你可以像oracle一样配置mysql服务器以| |的形式接受它。只需注意:)酷,谢谢,我不知道。但我不会使用它,在软件和硬件方面,我总是尝试使用“默认值”——因此屏幕上没有小部件或花哨的东西,车里或车上也没有“装饰物”)。我想知道其他人都得到了什么(因为我是一名自由职业者,当我找到下一个客户时不会感到失落)。