0

是否可以为此在mysql中创建触发器:

我有一张这样的桌子

Column1_id Column2_val
 1            2
 2            2

第二张桌子

Column1_id1 Column2_id2
    1           2

如果两行具有相同的值,那么几乎在更新或插入时,Column2_val我想将它的 id 插入到第二个表中。任何帮助将不胜感激。

我写了这个,但它似乎没有工作我做错了什么?

BEGIN
    set @user_id_update =  (SELECT Column1_id from users where in_play = 2 LIMIT 1);
    INSERT INTO player_pairs(PLAYER1_ID, PLAYER2_ID, GAME_ID) 
    VALUES (new.Column1_id, @user_id_update, 2); 
    UPDATE users  SET in_play = 1 where Column1_id in(@user_id_update, new.user_id);
END 
4

2 回答 2

0

尝试这样的事情

DELIMITER $$

    CREATE TRIGGER test AFTER INSERT, UPDATE ON `table1`
    FOR EACH ROW BEGIN
      SET x = (SELECT count(*) FROM `table1` WHERE Column2_val=NEW.Column2_val)
      IF (x > 1) THEN
            INSERT INTO `table2` VALUES(NEW.Column1_id, NEW.Column2_val)
      END IF;
    END$$

DELIMITER ;
于 2012-12-16T06:57:28.157 回答
0

试试这个,让我知道:

DELIMITER $$

    CREATE TRIGGER test AFTER INSERT, UPDATE ON `table1`
    FOR EACH ROW BEGIN
      IF (select count(Column2_val) from `table1` WHERE Column2_val=NEW.Column2_val> 0 ) THEN
            INSERT INTO `table2` VALUES(NEW.Column1_id, NEW.Column2_val)
      END IF;
    END$$

DELIMITER ;

但是,如果您想在第一个表的任何列上有任何重复记录,您可以将此列设置为“唯一”。

于 2015-06-07T20:58:22.893 回答