Aşağıdaki sözdizimini kullanarak mysql saklı bir yordam oluşturduk.
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 ;
FYI Saklı yordamı büyük ölçüde basitleştirdim ama herhangi bir sorun olmadan çalışır biliyorum.
Yapabileceğim şey, usergroup_comments tarafından böyle çalışan bir tetikleyici kurmak.
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;
Ama nedense her zaman mysql bana bir hata atar 4. satırda bir sözdizimi hatası olduğunu belirten daha az yardımcı olur.
MySQL belgeleri ile taranmış ve tetikleyici kısıtlamaları hakkında bazı bilgiler buldum ama oldukça kıvrık bulundu.
http://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.html
Herhangi bir fikir yardımcı olacaktır.