He creado un procedimiento almacenado en mysql usando la siguiente sintaxis.
DROP PROCEDURE IF EXISTS `sp-set_comment_count`;
DELIMITER $$
CREATE PROCEDURE `sp_set-comment_count` (IN _id INT)
BEGIN
-- AC - AllCount
DECLARE AC INT DEFAULT 0;
SELECT COUNT(*) AS ac
INTO AC
FROM usergroups AS ug
LEFT JOIN usergroup_comments AS ugm ON ugm.`gid` = ug.`id`
LEFT JOIN mediagallery AS dm ON ugm.mid = dm.`id`
WHERE dm.`status` NOT IN (200, 201, 202, 203, 204, 205)
AND ug.`id` = _id;
UPDATE usergroups
SET allCount = AC,
WHERE usergroups.`id` = _id;
END $$
DELIMITER ;
Para su información, he simplificado enormemente el procedimiento almacenado, pero sé que funciona sin ningún problema.
Lo que me gustaría poder hacer es configurar un activador desde usergroup_comments que funcione de esta manera.
DROP TRIGGER IF EXISTS `usergroups_comments_insert`
CREATE TRIGGER `usergroups_comments_insert` AFTER INSERT ON `usergroups_comment`
FOR EACH ROW
BEGIN
CALL sp-set-comment_count(NEW.`gid`);
END;
Pero por alguna razón, cada vez que hago mysql me arroja un error que no es útil, indicando que hay un error de sintaxis en la línea 4.
Revisé la documentación de mysql y encontré información sobre las restricciones de los desencadenantes, pero la encontré bastante complicada.
http://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.html
Cualquier idea sería útil.