2012-12-16 42 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記錄您可以將此列設置爲「唯一」。