通过触发器将表记录存档到另一个表(将daialy表记录移动到每周表,evry day)

时间:2010-05-26 06:34:26

标签: mysql sql triggers

我在mysql 5中编写了这个触发器:

create trigger changeToWeeklly after insert on tbl_daily for each row  
     

开始
  插入到tbl_weeklly SELECT * FROM vehicleslocation v
  其中v.recivedate< CURDATE();
  删除FROM tbl_daily其中recivedate< CURDATE();
  结束;

我希望按日期归档记录,将昨天插入的记录从dailly移动到每周表,将最后一周的表转移到mounthly表并从上一个表中删除此记录 在每日tabled中插入时,此触发器有以下错误: “无法在存储的函数/触发器中更新表'tbl_daily',因为它已被调用此存储函数/触发器的语句使用。”

请帮我解决相关表格中存档旧数据的问题:

  

将昨天插入的记录移至每周表,如果有可靠的解决方案请告诉我。

1 个答案:

答案 0 :(得分:1)

您无法从同一个表的插入触发器中删除表中的行。在任何情况下,我都建议将触发器中的处理保持在最低限度是非常有利的。

我个人在vehiclelocation表上只有一个插入触发器,他唯一的工作就是将每个插入的行复制到tbl_daily存档表中。然后我会有一个单独的SQL查询,它将被安排在每天结束时自动运行一次,以便对您的存档数据执行所需的内务管理: - 即。在月底清除旧的月度数据,在周末将所有行从每周移动到每月,并在每天结束时将所有行从每天移动到每周。