首页 > 解决方案 > Mysql On 触发每一行

问题描述

我需要以下代码的帮助。我的问题是我只希望每个语句执行一次代码(在我搜索后,我检查了表达式不再存在,每行只执行一次)。所以我尝试添加:

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

标签: mysql

解决方案


推荐阅读