2012-12-16 43 views
0

是否有可能在MySQL中创建一个触发此:MySQL在一个表创建更新/插入触发

我有这样

Column1_id Column2_val 
1   2 
2   2 

二表

Column1_id1 Column2_id2 
    1   2 

表所以几乎更新或插入如果两行具有相同的值为Column2_val我想插入到第二个表的ID。任何帮助将大大appriciated。

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

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 
+0

[你有什么尝试?](http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html) –

+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 ; 
+0

谢谢,但但即时通讯不试图插入新的id和新的val到表2.我想添加新的id和另一个旧的id,这是不同于当前行的值是2.这似乎并没有工作,当我做更新触发 – Arslan

+0

@ user1884193你是说你想插入table2的方式有问题或者触发器不工作? – Chipmunk

+0

触发器不起作用。我只是用java来完成任务。多谢你们。 – Arslan

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记录您可以将此列设置为“唯一”。