Тригер вызывается при добавлении любого действия, т.е. комментарий, фотка, видео и т.д.
Вот он
SET @type := NEW.`type`;
SET @user_id := NEW.user_id;
SET @user_profile_id := NEW.user_profile_id;
SET @country_iso := NEW.country_iso;
SET @place_id := NEW.`place_id`;
SET @city_id := NEW.`city_id`;
SET @comment_cnt := CASE WHEN @type = 'comment' THEN 1 ELSE 0 END;
SET @photo_cnt := CASE WHEN @type = 'photo' THEN 1 ELSE 0 END;
SET @video_cnt := CASE WHEN @type = 'video' THEN 1 ELSE 0 END;
SET @tag_cnt := CASE WHEN @type = 'tag' THEN 1 ELSE 0 END;
SET @checkin_cnt := CASE WHEN @type = 'checkin' THEN 1 ELSE 0 END;
-- update user count actions in the place
INSERT INTO `remake_town_counter` (`user_id`,`user_profile_id`,`country_iso`,`city_id`,`place_id`, `comment_cnt`,`photo_cnt`,`video_cnt`,`checkin_cnt`,`tag_cnt`,`rank`)
VALUES (@user_id,@user_profile_id,@country_iso,@city_id,@place_id,@comment_cnt,@photo_cnt,@video_cnt,@checki n_cnt,@tag_cnt,1)
ON DUPLICATE KEY UPDATE
`comment_cnt`=`comment_cnt`+@comment_cnt,`photo_cnt`=`photo_cnt`+@photo_cnt,`video_cnt`=`video_cnt`+ @video_cnt,`checkin_cnt`=`checkin_cnt`+@checkin_cnt,`tag_cnt`=`tag_cnt`+@tag_cnt,`rank`=`rank`+1;
-- update user count actions in the city
INSERT INTO `remake_town_counter` (`user_id`,`user_profile_id`,`country_iso`,`city_id`,`place_id`, `comment_cnt`,`photo_cnt`,`video_cnt`,`checkin_cnt`,`tag_cnt`,`rank`)
VALUES (@user_id,@user_profile_id,@country_iso,@city_id,0,@comment_cnt,@photo_cnt,@video_cnt,@checkin_cnt,@tag_cnt,1)
ON DUPLICATE KEY UPDATE
`comment_cnt`=`comment_cnt`+@comment_cnt,`photo_cnt`=`photo_cnt`+@photo_cnt,`video_cnt`=`video_cnt`+ @video_cnt,`checkin_cnt`=`checkin_cnt`+@checkin_cnt,`tag_cnt`=`tag_cnt`+@tag_cnt,`rank`=`rank`+1;
-- update user count actions in the world
INSERT INTO `remake_town_counter` (`user_id`,`user_profile_id`,`country_iso`,`city_id`,`place_id`, `comment_cnt`,`photo_cnt`,`video_cnt`,`checkin_cnt`,`tag_cnt`,`rank`)
VALUES (@user_id,@user_profile_id,0,0,0,@comment_cnt,@photo_cnt,@video_cnt,@checkin_cnt,@tag_cnt,1)
ON DUPLICATE KEY UPDATE
`comment_cnt`=`comment_cnt`+@comment_cnt,`photo_cnt`=`photo_cnt`+@photo_cnt,`video_cnt`=`video_cnt`+ @video_cnt,`checkin_cnt`=`checkin_cnt`+@checkin_cnt,`tag_cnt`=`tag_cnt`+@tag_cnt,`rank`=`rank`+1;
Получается если плейс 0, то эта запись для города. Если не указана страна(равна 0) - то это для всего мира
И тут такой момент... при этом тригере отрабатывает обновление статы плейса и мира, города - нет.
Просто оставить город - обновляет.
Город+мир - обновляет(т.е. убираю плейс). Мир+плейс - всё обновляет. Город+плейс - только плейс.
Все 3 - обновляет всё, кроме города
Меняю местами блок апдейта плейса с блоком апдейта города - обновляет строку города, плейс не обновляет
Все апдейты - для 1й таблицы.
Кто сталкивался с таковой ситуацией и как решали?
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться