Помогите разобраться, пишу в WorkBench'е триггер для пересчёта «кармы» пользователя при голосовании другого за него. Он мне выделяет красным цветом, мол неправильно, но не пишет, что именно.
Есть такие таблицы:
CREATE TABLE IF NOT EXISTS `projectxdb`.`users` (
`user_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`karma` INT NOT NULL DEFAULT 0 ,
PRIMARY KEY (`user_id`) )
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `projectxdb`.`user_karmas` (
`users_user_id` INT UNSIGNED NOT NULL ,
`users_user_vote_receiver_id` INT UNSIGNED NOT NULL ,
`karma_vote` INT(1) NULL DEFAULT 0 ,
PRIMARY KEY (`users_user_id`, `users_user_vote_receiver_id`) ,
ENGINE = InnoDB;
Так как в mysql нет функции LAST() и в таблице user_karmas у меня нету id, триггер становится более интересным:
DELIMITER |
/*0*/CREATE TRIGGER `recalc_karma` AFTER INSERT ON `user_karmas`
/*1*/FOR EACH ROW BEGIN
/*2*/ UPDATE users SET karma=
/*3*/ (SELECT AVG(karma_vote) FROM user_karmas WHERE users_user_vote_receiver_id=/*считаем среднюю карму*/
/*4*/ (SELECT users_user_vote_receiver_id FROM user_karmas LIMIT ((SELECT COUNT(*) FROM user_karmas)-1), 1 as karma_receiver_id)/*для последнего добавленного юзера в таблице user_karmas*/
/*5*/ )
/*6*/ ) WHERE user_id=karma_receiver_id; /*и ставим ему новую среднюю карму*/
/*7*/END;
Ругается на 4 строку.
Вопрос 1: Как заставить WorkBench показывать текст ошибки?
Вопрос 2: Что тут не правильно?