MYSQL从其他数据库更新

时间:2015-12-14 21:47:57

标签: mysql

我试图这样做:

我有两个表table_1table_2,我希望每次table_2

时更新table_1.id = table_2.id中的行值

实际上我在php上有这个过程,但是我必须每隔5分钟通过cronjob运行它,但现在我需要它。

知道如何在mysql中执行此操作吗?

2 个答案:

答案 0 :(得分:1)

要实现您想要的效果,您必须使用触发器。触发器是在满足条件时自动执行的查询。创建触发器时,您可以选择何时触发。以下是所有可能性:

  • 插入之前/之后
  • 删除之前/之后
  • 更新前/后

查询将执行该条件是否满足。 在触发器语句中,您可以使用OLD和NEW作为表中新元素或旧元素的引用。正如文件所说:

  

在INSERT触发器中,只能使用NEW.col_name;没有旧的   行。在DELETE触发器中,只能使用OLD.col_name;没有   新排。在UPDATE触发器中,您可以使用OLD.col_name来引用   更新之前的行的列和要引用的NEW.col_name   更新后的行的列。

您也可以使用BEGIN ... END。我当前的计算机上没有mysql,但我认为正确查询的语法应该接近这个:

DELIMITER $$

CREATE TRIGGER table_2_insertTrigger AFTER INSERT ON table_2 
    FOR EACH ROW BEGIN
    DECLARE numberOfRow INT;
    SET numberOfRow = (select count(*) from table_1 where table_1.id = NEW.id);
    IF numberOfRow > 0 THEN
      UPDATE table_1 set name = NEW.name where id = NEW.id;
    END IF;
END$$

DELIMITER ;

如果要修改同一个表,可以执行以下操作:

IF numberOfRow > 0 THEN
          SET NEW.name = "whatever you want it to equal";
        END IF;

答案 1 :(得分:1)

以Matriac为例,我找到了这个解决方案:

listBox1.DataSource = group;
listBox1.DisplayMember = "Name"; //Set the DisplayMember property to avoid call ToString()