我试图这样做:
我有两个表table_1
和table_2
,我希望每次table_2
table_1.id = table_2.id
中的行值
实际上我在php上有这个过程,但是我必须每隔5分钟通过cronjob运行它,但现在我需要它。
知道如何在mysql中执行此操作吗?
答案 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()