如果否则不能在 phpmyadmin 触发器中工作
If else not working in phpmyadmin trigger
所以我在 phpmyadmin 中使用 MySQL 触发器。这是我 table scorm_track:
的触发器
UPDATE userbatch
LEFT JOIN scorm_track
ON
(userbatch.user_id = scorm_track.userid)
LEFT JOIN trainingobject
ON
(scorm_track.tobjid = trainingobject.id)
IF scorm_track.element = 'cmi.core.lesson_status' THEN
SET userbatch.to_completion = scorm_track.value,
userbatch.trainingcompleted = scorm_track.timemodified;
ELSEIF scorm_track.element = 'cmi.core.score.raw' THEN
SET userbatch.comment = scorm_track.value;
ENDIF;
WHERE (userbatch.batch_id = trainingobject.batchid) AND
scorm_track.id=NEW.id AND
scorm_track.element = 'cmi.core.lesson_status' OR scorm_track.element = 'cmi.core.score.raw'
但是显示如下错误:"MySQL said #1064 - You have an error in your SQL syntax..."
这个问题是在我添加 IF ELSE 语句后开始出现的。之前工作正常。任何人都可以提出为什么会发生这种情况吗?
这是因为加入时更新语法错误。 if-else
这里的用法是错误的。查询应该是
update userbatch ub
left join scorm_track st on ub.user_id = st.userid
left join trainingobject tob on tob.id = st.tobjid
set
ub.to_completion =
case
when st.element = 'cmi.core.lesson_status' then st.value
end ,
ub.to_completion =
case when st.element = 'cmi.core.lesson_status' then st.value
end,
ub.trainingcompleted =
case when st.element = 'cmi.core.lesson_status' then st.timemodified
end,
ub.comment =
case when st.element = 'cmi.core.score.raw' then st.value
end
where
ub.batch_id = tob.batchid
and st.id = new.id
and ( st.element = 'cmi.core.lesson_status' or st.element = 'cmi.core.score.raw )
所以我在 phpmyadmin 中使用 MySQL 触发器。这是我 table scorm_track:
的触发器UPDATE userbatch
LEFT JOIN scorm_track
ON
(userbatch.user_id = scorm_track.userid)
LEFT JOIN trainingobject
ON
(scorm_track.tobjid = trainingobject.id)
IF scorm_track.element = 'cmi.core.lesson_status' THEN
SET userbatch.to_completion = scorm_track.value,
userbatch.trainingcompleted = scorm_track.timemodified;
ELSEIF scorm_track.element = 'cmi.core.score.raw' THEN
SET userbatch.comment = scorm_track.value;
ENDIF;
WHERE (userbatch.batch_id = trainingobject.batchid) AND
scorm_track.id=NEW.id AND
scorm_track.element = 'cmi.core.lesson_status' OR scorm_track.element = 'cmi.core.score.raw'
但是显示如下错误:"MySQL said #1064 - You have an error in your SQL syntax..."
这个问题是在我添加 IF ELSE 语句后开始出现的。之前工作正常。任何人都可以提出为什么会发生这种情况吗?
这是因为加入时更新语法错误。 if-else
这里的用法是错误的。查询应该是
update userbatch ub
left join scorm_track st on ub.user_id = st.userid
left join trainingobject tob on tob.id = st.tobjid
set
ub.to_completion =
case
when st.element = 'cmi.core.lesson_status' then st.value
end ,
ub.to_completion =
case when st.element = 'cmi.core.lesson_status' then st.value
end,
ub.trainingcompleted =
case when st.element = 'cmi.core.lesson_status' then st.timemodified
end,
ub.comment =
case when st.element = 'cmi.core.score.raw' then st.value
end
where
ub.batch_id = tob.batchid
and st.id = new.id
and ( st.element = 'cmi.core.lesson_status' or st.element = 'cmi.core.score.raw )