MySQL事件变量-将值复制到另一个表

MySQL事件变量-将值复制到另一个表,mysql,sql,Mysql,Sql,上面我有一个MySQL事件,每分钟运行一次,删除5分钟内未更新的行。我有另一张表叫saved_vehicles。车辆中的所有行将在保存的车辆表中有一行。我想做的基本上是将上次更新的时间复制到保存的车辆表中。例如,假设保存的车辆字段是上次已知的在线时间。这基本上保存了车辆的一份副本及其最后一次已知的在线时间 基本上,我是在删除行之前创建备份。在删除之前插入到已保存的车辆中。 试试这个: DELIMITER | CREATE EVENT myevent ON SCHEDULE AT CUR

上面我有一个MySQL事件,每分钟运行一次,删除5分钟内未更新的行。我有另一张表叫saved_vehicles。车辆中的所有行将在保存的车辆表中有一行。我想做的基本上是将上次更新的时间复制到保存的车辆表中。例如,假设保存的车辆字段是上次已知的在线时间。这基本上保存了车辆的一份副本及其最后一次已知的在线时间


基本上,我是在删除行之前创建备份。

在删除之前插入到已保存的车辆中。 试试这个:

DELIMITER |

CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
    DO
      BEGIN
        DELETE FROM vehicle WHERE last_updated < (NOW() - INTERVAL 5 MINUTE)
      END |

DELIMITER ;
为了避免列出我在注释中提到的字段,请尝试选择除主键列之外的所有字段。 做这个检查

更新 我从上面提到的关于插入的内容中了解到-如果您保存的车辆表与车辆表具有相同的结构,但其主键的名称与车辆f.e.base_id不同,当车辆PK为id且其int auto_增量时,它将正常工作

DELIMITER |

CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
    DO
      BEGIN
        SET @time = NOW() - INTERVAL 5 MINUTE;

            # select * is not very smart, it will also copy your primary key, 
            # so you can get error about duplicates. Listing fields would work here.
        INSERT INTO saved_vehicle (SELECT * FROM vehicle WHERE last_updated < @time); 
        DELETE FROM vehicle WHERE last_updated < @time;

      END |

DELIMITER ;