我有一个名为clients
的表,在该表中有两列重要性;id
和client
.我在同一个数据库中有一个名为calendar
的辅助表。我真的希望calendar
表中的两列id
和client
与表中的client
列同步。
现在我正在使用这个PHP在MySQL中执行它:
INSERT IGNORE INTO calendar (id, client) SELECT id, client FROM clients;
有没有更好的方法来完成这项任务?也许是我忽略的MySQL中的内置函数或类似的东西?
使用触发器:MySQL触发器是与表关联的数据库对象。当对表执行定义的操作时,它将被激活。
当您在表上运行以下 MySQL 语句之一时,可以执行触发器:插入、更新和删除,并且可以在事件发生之前或之后调用它。
您可以在主表中插入或更新一行并在另一个表中进行更改时触发
例:
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 ;
"new"代表插入到客户端表中的新值。相同的值将插入到日历中的 id 和客户端列中。
注意:单引号从表名中删除,因为引号有效地使其成为字符串文字而不是正确的标识符。 分隔符命令会将每个语句的结尾从";"更改为"$$",以便MySQL不会与触发器内外的";"混淆
为更新和删除创建类似的触发器
示例和语法的简单指南: http://www.mysqltutorial.org/create-the-first-trigger-in-mysql.aspx