MySQL在表上创建更新/插入触发器

时间:2012-12-16 04:21:44

标签: mysql triggers

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

我有一张这样的表

Column1_id Column2_val
 1            2
 2            2

第二张表

Column1_id1 Column2_id2
    1           2

如果twos行具有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 

2 个答案:

答案 0 :(得分: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 ;

答案 1 :(得分: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 ;

但是,如果您希望在第一个表的任何列上都有任何dublicate记录,则可以将此列设为“唯一”。