同步来自同一MySQL数据库中不同表的两行

时间:2019-01-07 04:48:04

标签: php mysql database

我有一个名为clients的表,该表中有两列重要的内容; idclient。我在名为calendar的同一数据库中有一个辅助表。我真的希望id表中clientcalendar的两列与client表中的两列同步。

现在我正在使用此PHP在MySQL中执行此操作:

INSERT IGNORE INTO calendar (id, client) SELECT id, client FROM clients;

是否有更好的方法来完成此任务?也许是我忽略的MySQL中的内置函数或类似的东西?

1 个答案:

答案 0 :(得分:1)

使用触发器:MySQL触发器是与表关联的数据库对象。当为表执行定义的操作时,它将被激活。

在表上运行以下MySQL语句之一时,可以执行触发器:INSERT,UPDATE和DELETE,并且可以在事件发生之前或之后调用该触发器。

您可以在主表中插入或更新一行并在另一个表中进行更改时触发

示例:

DELIMITER $$

CREATE TRIGGER my_sync_trigger 
AFTER INSERT ON `clients` for each row
begin
INSERT INTO calender (id,client)
Values (new.id, new.client);
END$$

DELIMITER ;

“新”代表插入到客户表中的新值。相同的值将插入日历的id和client列中。

注意:单引号已从表名中删除,因为引号实际上使它成为字符串文字而不是适当的标识符。 DELIMITER命令将从“;”更改每个语句的结尾改为“ $$”,这样MySQL不会与“;”混淆触发器内外

为更新和删除设置类似的触发器

示例和语法的简单指南: http://www.mysqltutorial.org/create-the-first-trigger-in-mysql.aspx