Php 在mysql中使用触发器从主表中查找输入和输出时间
各位,我这里有个小问题。这个想法很简单。每次在主表中插入新行时,我都需要将值提取到子表 主表:Php 在mysql中使用触发器从主表中查找输入和输出时间,php,mysql,sql,triggers,Php,Mysql,Sql,Triggers,各位,我这里有个小问题。这个想法很简单。每次在主表中插入新行时,我都需要将值提取到子表 主表: +--------+------------+-------+ + id + dates + time + +--------+------------+-------+ + 101 + 2017/07/24 + 07:12 + + 101 + 2017/07/24 + 16:02 + + 102 + 2017/07/24 + 07:10 + + 102
+--------+------------+-------+
+ id + dates + time +
+--------+------------+-------+
+ 101 + 2017/07/24 + 07:12 +
+ 101 + 2017/07/24 + 16:02 +
+ 102 + 2017/07/24 + 07:10 +
+ 102 + 2017/07/24 + 15:58 +
+ 103 + 2017/07/24 + 07:02 +
+ 103 + 2017/07/24 + 16:05 +
+ 101 + 2017/07/25 + 07:10 +
+ 101 + 2017/07/25 + 15:34 +
+ 102 + 2017/07/25 + 07:00 +
+ 102 + 2017/07/25 + 16:38 +
+ 103 + 2017/07/25 + 07:02 +
+ 103 + 2017/07/25 + 16:18 +
然后,我们转到每次将新行插入主表时触发的子表。该表应如下所示:
+--------+------------+---------+----------+
+ id + dates + time_in + time_out +
+--------+------------+---------+----------+
+ 101 + 2017/07/24 + 07:12 + 16:02 +
+ 102 + 2017/07/24 + 07:10 + 15:58 +
+ 103 + 2017/07/24 + 07:02 + 16:05 +
+ 101 + 2017/07/25 + 07:10 + 15:34 +
+ 102 + 2017/07/25 + 07:00 + 16:38 +
+ 103 + 2017/07/25 + 07:02 + 16:18 +
通常,我使用以下SQL代码生成子表:
INSERT INTO child_table (id, dates, time_in, time_out)
SELECT id, dates, MIN(time) as time_in, MAX(time) as time_out FROM
master_table GROUP BY dates, id
在我意识到我的代码需要更长的时间才能加载页面之前。我认为使用触发器会更有效率。请提供帮助:)如果您正在手动执行插入操作,并且希望使用此触发器
DELIMITER //
CREATE TRIGGER `ADD_DATA_AUTO` AFTER INSERT ON `MASTERTABLE` FOR EACH ROW BEGIN
INSERT INTO child_table (id, dates, time_in, time_out)
SELECT id, dates, MIN(time) as time_in, MAX(time) as time_out FROM
master_table GROUP BY dates, id
END//
DELIMITER ;
这个触发器的作用是:它告诉mysql在MASTERTABLE中插入后运行插入查询
DELIMITER //
CREATE TRIGGER `ADD_DATA_AUTO` AFTER INSERT ON `MASTERTABLE` FOR EACH ROW BEGIN
INSERT INTO child_table (id, dates, time_in, time_out)
SELECT id, dates, MIN(time) as time_in, MAX(time) as time_out FROM
master_table GROUP BY dates, id
END//
DELIMITER ;
这个触发器的作用是它告诉mysql在MASTERTABLE中插入后运行插入查询是的,与每次加载页面时插入相比,使用触发器是一个更好的选择
看看教程。在您的情况下,您应该使用AFTER INSERT触发器,在将新行插入到主表之后,将新记录插入到子表中。进入部分MySQL触发器:插入后的示例应能让您很好地了解如何为场景构造触发器。HTH.是的,与每次加载页面时插入相比,使用触发器是一个更好的选择,这是正确的
看看教程。在您的情况下,您应该使用AFTER INSERT触发器,在将新行插入到主表之后,将新记录插入到子表中。进入部分MySQL触发器:插入后的示例应能让您很好地了解如何为场景构造触发器。HTH.有什么问题??您所说的“每次将新行插入主表时触发的子表”似乎已经在使用了trigger@Ashish451看起来OP正在手动将行插入子表。@Ashish451已触发,我的意思是生成。:)什么问题??您所说的“每次将新行插入主表时触发的子表”似乎已经在使用了trigger@Ashish451看起来OP正在手动将行插入子表。@Ashish451已触发,我的意思是生成。:)我需要做一些修改,但它的工作。谢谢,我需要做一些修改,但它的工作。谢谢,谢谢你的建议。非常感谢。谢谢你的建议。非常感谢。