मैंने निम्नलिखित सिंटैक्स का उपयोग करके 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 ;
FYI करें मैंने संग्रहीत प्रक्रिया को बहुत सरल कर दिया है, लेकिन मुझे पता है कि यह बिना किसी समस्या के काम करता है।
मैं ऐसा करने में सक्षम होना चाहूंगा कि उपयोगकर्ता समूह से एक ट्रिगर सेट किया जाए जो इस तरह से काम करता है।
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
कोई भी विचार मददगार होगा।