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