Saya telah membuat prosedur tersimpan di mysql menggunakan sintaks berikut.
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 Saya sudah sangat menyederhanakan prosedur tersimpan tetapi saya tahu ini bekerja tanpa masalah.
Yang ingin saya lakukan adalah menyiapkan pemicu dari usergroup_comments yang berfungsi seperti ini.
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;
Tetapi untuk beberapa alasan setiap kali saya melakukan mysql melempar kesalahan pada saya yang kurang membantu menyatakan bahwa ada kesalahan sintaks pada baris 4.
Saya telah menyisir dokumentasi mysql dan menemukan beberapa informasi tentang batasan pemicu tetapi ternyata cukup berbelit-belit.
http://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.html
Setiap ide akan sangat membantu.