我有一个名为clients
的表,该表中有两列重要的内容; id
和client
。我在名为calendar
的同一数据库中有一个辅助表。我真的希望id
表中client
和calendar
的两列与client
表中的两列同步。
现在我正在使用此PHP在MySQL中执行此操作:
INSERT IGNORE INTO calendar (id, client) SELECT id, client FROM clients;
是否有更好的方法来完成此任务?也许是我忽略的MySQL中的内置函数或类似的东西?
答案 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