Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL在表上创建更新/插入触发器_Mysql_Triggers - Fatal编程技术网

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

MySQL在表上创建更新/插入触发器,mysql,triggers,Mysql,Triggers,是否可以在mysql中为此创建触发器: 我有一张这样的桌子 Column1_id Column2_val 1 2 2 2 DELIMITER $$ CREATE TRIGGER test AFTER INSERT, UPDATE ON `table1` FOR EACH ROW BEGIN SET x = (SELECT count(*) FROM `table1` WHERE Column2_val=NEW.Col

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

我有一张这样的桌子

Column1_id Column2_val
 1            2
 2            2
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 ;
第二桌

Column1_id1 Column2_id2
    1           2
因此,如果两行的
Column2\u 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 

试试这样的

Column1_id Column2_val
 1            2
 2            2
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 ;

试试这个,让我知道:

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 ;

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

添加有关您想要的记录的更多信息,但我不会尝试将新id和新val插入表2中。我想添加新id和另一个旧id,这与当前行(其中值为2)不同。当我更新时,它似乎不起作用trigger@user1884193您是说在表2中插入的方式有问题,还是触发器不工作?触发器不工作。我只是用java来完成这个任务。谢谢大家。请发布你们的答案,以进一步了解解决方案,这可能会帮助其他人。