Mysql при срабатывании каждой строки - PullRequest
0 голосов
/ 14 апреля 2020

Мне нужна помощь для кода ниже. Моя проблема в том, что я хочу, чтобы код выполнялся только один раз за оператор (после поиска я проверил, что выражение больше не существует, только один раз в строке). Поэтому я попытался добавить:

IF NOT EXISTS 
    (Select count(*) FROM replay_replays_access WHERE id_game = new.id_game GROUP BY id_game HAVING count(*) <5) 
THEN

Но не сработало и то, что я могу сделать, его дублирование иногда дублирует информацию?

TRIGGER replay
AFTER UPDATE
ON table_replays FOR EACH ROW
begin
    IF EXISTS 
        (SELECT 
            replay_games.room_name 
        FROM replay_games 
        WHERE replay_games.room_name = 'Tournament Room' and replay_games.id = new.id_game) 
    THEN
      IF NOT EXISTS 
        (Select 
             count(*) 
         FROM replay_replays_access 
         WHERE id_game = new.id_game 
         GROUP BY id_game 
         HAVING count(*) <5) 
       THEN
         INSERT INTO replay_replays_access(id_game, id_player, replay_name, do_not_hide)
             SELECT 
                 new.id_game, 
                 replay_users.id , 
                 CONCAT(
                   (SELECT game_types 
                    FROM replay_games 
                    WHERE id=new.id_game),
                   ': ',
                   (SELECT 
                       descr 
                    FROM replay_games 
                    WHERE id=new.id_game)) , 
                 0 
             FROM replay_users 
             WHERE 
                 (replay_users.admin > 0 OR 
                     replay_users.privlevel = 'TOURNAMENT MEMBER') 
                 AND NOT replay_users.name = (
                     SELECT 
                          replay_games.creator_name 
                     FROM replay_games 
                     WHERE replay_games.id = new.id_game);
      END IF;
    END IF;
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...