MySql事件从2个月以上的表中删除数据

MySql事件从2个月以上的表中删除数据,mysql,mysql-event,Mysql,Mysql Event,我是MySql事件的新手,我以前从未使用过它们,所以请容忍我。 使用我的数据库,我有订单详细信息和发票表,我需要创建事件来删除2个月以前的所有记录和,其中订单详细信息状态=5和发票状态=3 我想让活动在每天凌晨3点进行删除,我如何才能做到这一点 任何帮助都将不胜感激 更新: 这两个表都在 表格定义 A-订单日期: 身份证 点菜吧 描述 地位 创建于 B-发票: 身份证 发票号 地位 创建于 我希望这能回答你的问题。确保将您的模式(数据库名称)与表名(如[schema_name.table

我是MySql事件的新手,我以前从未使用过它们,所以请容忍我。 使用我的数据库,我有订单详细信息发票表,我需要创建事件来删除2个月以前的所有记录
,其中订单详细信息状态=5
发票状态=3
我想让活动在每天凌晨3点进行删除,我如何才能做到这一点 任何帮助都将不胜感激

更新:

这两个表都在

表格定义

A-订单日期

  • 身份证
  • 点菜吧
  • 描述
  • 地位
  • 创建于
B-发票

  • 身份证
  • 发票号
  • 地位
  • 创建于

我希望这能回答你的问题。确保将您的模式(数据库名称)与表名(如[schema_name.table_name])一起包含,以确保事件与正确的表相关联。祝你好运。

在这里的两个问题(删除和创建事件)中,你对哪一个有问题。订单详情状态=5和发票状态=3的位置不清楚,也不清楚如何将订单链接到发票(如果是有意的话)。@P.Salmon实际上我看到了许多使用事件一次从1个表中删除的示例,在我的例子中,我有两个表,都有创建的时间戳列,订单详细信息状态必须为=5,发票状态必须为=3,因此我的问题是,请为订单详细信息和发票添加表定义。这是否回答了您的问题@P.Salmon不,我的朋友,我知道如何从表格中删除我要找的是一个每天3点删除的活动感谢你的回答,但在尝试之前,它不是缺少月份(单位)的时间戳吗?@Ali Adil,你是100%对的。我错了。必须有类似“TIMESTAMPDIFF(MONTH,created_at,NOW())。很抱歉,我只是编辑了它!您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,了解在“13”天/小时附近使用的正确语法)确实开始从forval\u DB中删除TIMESTAMPDIFF(第1行的“月份”我无法识别代码中的任何SQL语法错误。如果您这样做,我将感谢您指出。错误出现在DATE\u ADD函数中,缺少INTERVAL子句。现在已修复!
    CREATE EVENT delete_every_day
        ON SCHEDULE
          EVERY 1 DAY STARTS DATE_ADD(CURDATE(), INTERVAL'1 3' DAY_HOUR)
        -- Will delete every day record from invoices with status = 3 and more than 2 
        -- month old, and the order_details with status = 5 and more than 2 month old
        -- It will start deleting next day at 3:00 AM.
        DO
          BEGIN
            DELETE FROM your_schema.invoices
                 WHERE TIMESTAMPDIFF(MONTH,created_at, NOW()) > 2
                 AND status = 3;
            DELETE FROM your_schema.order_details
                 WHERE TIMESTAMPDIFF(MONTH,created_at, NOW()) > 2
                 AND status = 5;
          END