我想设置一个触发器,以便在更新时预测字段为=3,则触发器将值更改为4并将其保存在数据库中。触发器在下面。
由于某种原因,我一直收到一个错误消息:
#1442 - Can't update table 'tzanalytic\_forecast\_cached' in stored
function/trigger because it is already used by statement which invoked
this stored function/trigger.这样设置正确吗?
delimiter $$
CREATE TRIGGER no_BoW BEFORE UPDATE ON t FOR EACH ROW
BEGIN set @prediction = new.prediction;
UPDATE t SET t.prediction = (SELECT IF(@prediction = '3', '4', @prediction)) WHERE t.event_id = new.event_id AND t.price_tier = new.price_tier; END;
$$ delimiter ;发布于 2010-02-23 05:16:26
MySQL触发器不能操作分配给它们的表。所有其他主要的数据库管理系统都支持这一特性,所以希望MySQL能很快添加这一支持。
http://forums.mysql.com/read.php?99,122354,240978#msg-240978
发布于 2012-07-11 03:50:38
此外,您还需要确保没有其他过程或函数对此特定过程所分配到的表执行更新,或者以递归结束。例如
create trigger trig1 After update on table1 FOR EACH ROW
BEGIN
UPDATE table2 SET colum1 = column1 + 1
END;
create trigger trig2 After update on table2 FOR EACH ROW
BEGIN
UPDATE table1 SET colum2 = column2 + 1
END;这将以递归结束,因此要注意现有的存储过程和函数。
https://stackoverflow.com/questions/1582683
复制相似问题