Tengo dos tablas de MySQL. Una tabla de votos (id, userId, postId, voteTypeId)
, y una tabla de mensajes (id, postTypeId, userId, parentId)
. Estoy escribiendo un disparador que dispara después de insertar en los votos.¿Cómo puedo usar un disparador para actualizar una tabla diferente en MySQL?
Me gustaría que el activador actualice una publicación en la tabla de publicaciones. Pero esta publicación no es la misma a la que se hace referencia en mi tabla de votos en postId
; Es el padre de esa publicación.
BEGIN
CASE NEW.voteTypeId
WHEN 2 THEN UPDATE posts SET posts.acceptedAnswerId = NEW.postId WHERE posts.id = @the parent postId of NEW.postId
ELSE
BEGIN
END;
END CASE;
END
He intentado utilizar esto en vez de @ el padre de ...:
(SELECT posts.parentId FROM posts WHERE posts.id = NEW.postId)
Pero no creo que se puede hacer en SELECTS disparadores a menos que utilice algún tipo de sintaxis SELECT INTO . Mi única referencia a la publicación principal que deseo actualizar es su hijo postId al que se hace referencia en los votos. Así que no sé cómo hacer la actualización sin tomar la identificación correcta a través de una selección.
¿Esto es posible?
Se puede hacer, de hecho, un SELECT dentro de un gatillo. Sin embargo, su otra sintaxis se ve un poco apagada. – Mchl
@Mchl, probé algunas combinaciones, pero no funcionó. ¿Puedes señalarme lo que estoy haciendo mal? – Mohamad