Голову уже об стол разбил, не могу понять в чем проблема
все что в case не работает

если заменить на 3 IF, то работает только первый
все крутится на mySQL

CREATE TRIGGER add_count_comment AFTER INSERT ON comments
FOR EACH ROW
BEGIN
UPDATE user SET user.comment = user.comment +1 WHERE user.id = NEW.user_id; — это выполняется без проблем

CASE NEW.`user_id`
WHEN ‘Blog’ UPDATE `blog` SET `blog`.`comment` = `blog`.`comment`+1 WHERE `blog`.`id` = NEW.`user_id` ;
WHEN ‘Article’ UPDATE `article` SET `article`.`comment` = `article`.`comment`+1 WHERE `article`.`id` = NEW.`user_id` ;
WHEN ‘PopulatePlace’ UPDATE `populate_place` SET `populate_place`.`comment` = `populate_place`.`comment`+1 WHERE `populate_place`.`id` = NEW.`user_id` ;
END CASE;

END

в чем косяк? какие то ограничения сервера или туплю уже?

10 Responses to все что в case не работает

  1. RatFcuk:

    опечатался
    CASE NEW.`user_id` читать как CASE NEW.`owner_name`

  2. RatFcuk:

    CREATE TRIGGER add_count_comment AFTER INSERT ON comments
    FOR EACH ROW
    BEGIN
    UPDATE user SET user.comment = user.comment +1 WHERE user.id = NEW.user_id;

    CASE NEW.`owner_name`
    WHEN ‘Blog’ THEN UPDATE `blog` SET `blog`.`comment` = `blog`.`comment`+1 WHERE `blog`.`id` = NEW.`user_id` ;
    WHEN ‘Article’ THEN UPDATE `article` SET `article`.`comment` = `article`.`comment`+1 WHERE `article`.`id` = NEW.`user_id` ;
    WHEN ‘PopulatePlace’ THEN UPDATE `populate_place` SET `populate_place`.`comment` = `populate_place`.`comment`+1 WHERE `populate_place`.`id` = NEW.`user_id` ;
    END CASE;

    END

    вот правильный, но не работающий

  3. 5auam:

    какую ошибку выдаёт?

  4. RatFcuk:

    тригер добавляется без проблем
    добавляю каммент в базу.. счетчик у юзера увеличивается, остальные не меняются

  5. RatFcuk:

    т.е. по факту ошибок то и нет, но не работает

  6. Suksuper:

    проверить, что owner_name равен Article или там PopulatePlace, не?

  7. RatFcuk:

    Ура, все решилось.
    Не то поле брал.

    п.с. пишите документацию к своим проектам, людям потом в коде капаться же…

  8. NvrZZ:

    подозреваю что проблема была в этом месте

  9. NvrZZ:

    WHERE `blog`.`id` = NEW.`user_id`

    WHERE `article`.`id` = NEW.`user_id`

    WHERE `populate_place`.`id` = NEW.`user_id`

  10. RatFcuk:

    ага, там owner_id должно быть

Добавить комментарий