Mysql触发器错误r\u CANT\u UPDATE\u USED\u TABLE\u IN\u SF\u或\u TRG:Can&\x27;t更新表
当数据插入到同一个表中时,我使用了一个触发器来更新表!但当我在那个表中插入数据时,我得到了一个错误Mysql触发器错误r\u CANT\u UPDATE\u USED\u TABLE\u IN\u SF\u或\u TRG:Can&\x27;t更新表,mysql,sql,mysqli,mysql-error-1064,node-mysql,Mysql,Sql,Mysqli,Mysql Error 1064,Node Mysql,当数据插入到同一个表中时,我使用了一个触发器来更新表!但当我在那个表中插入数据时,我得到了一个错误 ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG: Can't update table 这是什么意思 触发代码: create trigger update_owners_leaving_time AFTER INSERT ON cc_owners_queries FOR EACH ROW BEGIN update cc_owners_queries set l
ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG: Can't update table
这是什么意思
触发代码:
create trigger update_owners_leaving_time
AFTER INSERT ON cc_owners_queries
FOR EACH ROW BEGIN
update cc_owners_queries set leaving_time = query_time + INTERVAL leaving_in MINUTE , trigger_updated = 1 where trigger_updated !=1;
END
错误:
Error: ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG: Can't update table 'cc_owners_queries' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
你必须这样做:
create trigger update_owners_leaving_time
AFTER INSERT ON cc_owners_queries
FOR EACH ROW BEGIN
IF NEW.trigger_updated != 1 THEN
set NEW.leaving_time = NEW.query_time + INTERVAL NEW.leaving_in MINUTE;
SET NEW.trigger_updated = 1;
END IF;
END
您不必说需要更新当前表。你绕着行走。。这一行将成为目标
更多信息:可能是因为更新触发了该触发器,这将导致无限循环?@Niels我没听明白!触发器将导致更新。哪个会触发,哪个会更新,哪个会触发,,等等。@vipulsodha你能分享一下你的触发器代码吗?@Mureinik是的,我做到了!