다음 구문을 사용하여 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
어떤 아이디어라도 도움이 될 것입니다.