我已经使用以下语法在mysql中创建了一个存储过程。
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 ;
仅供参考,我已经大大简化了存储过程,但是我知道它可以正常工作。
我想要做的是从usergroup_comments设置一个触发,其工作原理如下。
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;
但是由于某种原因,每次我执行mysql时都会向我抛出一个错误,这个错误没有多大帮助,因为第4行存在语法错误。
我仔细阅读了mysql文档,找到了有关触发器限制的一些信息,但发现它相当复杂。
http://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.html
任何想法都会有所帮助。