在创建下面的触发器之后,当我尝试执行更新时,出现错误(在代码后详述)。无论我走哪条路,我似乎都无法更新表格。我是否必须创建一个新表格并在其中添加一列用于更新,或者有解决方法吗? This page说:“在存储的函数或触发器中,不允许修改调用该函数或触发器的语句已在使用(用于读取或写入)的表。”但是,NEW和OLD关键字有什么意义?我只是不正确地使用它们吗?mySQL触发器无法更新调用触发器的语句已在使用的表
表:像册
列:重量,改性剂,评级
触发:updateRating
CREATE TRIGGER updateRating
BEFORE UPDATE ON gallery
FOR EACH ROW
UPDATE gallery SET rating= sum(NEW.weight * NEW.modifier)
或
CREATE TRIGGER updateRating
AFTER UPDATE ON gallery
FOR EACH ROW
UPDATE gallery SET rating= sum(weight * modifier)
SQL查询:编辑
UPDATE`acs`.`gallery` SET`weight` = '6' WHERE`gallery`.`id` = 1 LIMIT 1
MySQL表示:文件
#1442 - 无法更新在存储函数/触发器中的表'库',因为它已经被调用该存储函数/触发器的语句使用。
不得不删除BEGIN/END关键字,因为只有一个语句要运行(目前),但是这很有效。感谢您澄清我可以改变NEW.rating,但不仅仅是直接在桌上进行评分。你是对的,我可以使用一个即时的SELECT语句。尽管如此,我还是想在其他方面加入其他内容,所以这就是为什么我想弄明白。 – SimonDever