Ich habe eine gespeicherte Prozedur in MySQL mit der folgenden Syntax erstellt.
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 ;
Zu Ihrer Information Ich habe die gespeicherte Prozedur stark vereinfacht, aber ich weiß, dass sie ohne Probleme funktioniert.
Ich möchte in der Lage sein, einen Trigger aus usergroup_comments einzurichten, der wie folgt funktioniert.
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;
Aber aus irgendeinem Grund wirft mir jedes Mal, wenn ich mit MySQL arbeite, ein Fehler zu, der nicht hilfreich ist und besagt, dass in Zeile 4 ein Syntaxfehler vorliegt.
Ich habe die MySQL-Dokumentation durchgesehen und einige Informationen zu Einschränkungen von Triggern gefunden, aber festgestellt, dass sie ziemlich verworren sind.
http://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.html
Irgendwelche Ideen wären hilfreich.