mysql - 是否可以根据创建日期安排从 mysql 表中删除行?

标签 mysql database rdbms

我有一个包含用户创建的聊天室的表。我希望我的数据库服务器自动删除 1 天前的房间。我知道我可以手动编写一个查询来执行此操作,但我不知道如何让数据库服务器自行删除行。

Table

最佳答案

您可以将这个问题与数据库归档过程联系起来,在该过程中您可以归档旧数据(可以按日/月/年),并且该归档数据可以存储到另一个表中,这有利于备份。 这可以通过简单的 cron 作业来完成。

As you might aware of cron job which is a time based job scheduler in unix system to run automatically at a specified time and date. - https://kb.iu.edu/d/afiz

您可以按照以下步骤编写一个 shell 脚本,其中包含用于数据库归档的 mysql 查询

  1. 在同一数据库上创建存档表 - 用于备份

create table archive_table like main_table;

  • 将旧数据插入到 Archive 表中,以便将来需要时可以使用它,在本例中它将插入一天前的数据(您可以根据您的要求进行更改)
  • insert into archive_table select * from main_table where created_at < DATE_SUB(NOW(), INTERVAL 1 DAY);

  • 通过运行以下查询从主表中删除相同的数据
  • delete from main_table where created_at < DATE_SUB(NOW() - INTERVAL 1 DAY);

    使用上层查询构建脚本文件(请参阅 shell 脚本语法来构建脚本)。 通过运行以下命令打开您的 crontab 列表

    crontab -l

    并将以下命令放入 crontab 列表中。根据脚本文件的路径更改此命令。用于crontab-guru引用并放置

    0 0 * * * cd path-to-script-file && sh path-to-shell-script-file

    关于mysql - 是否可以根据创建日期安排从 mysql 表中删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50599290/

    相关文章:

    php - 如何在Wordpress外部循环中对自定义字段日期进行排序

    PHP SQL 数据库查询错误信息

    java - Snowflake 通过 R/RJDBC - 无法检索 JDBC 结果集

    php - Laravel leftJoin 现在显示结果

    php - 计算特定数据数除以总数据数

    oracle - 升级 Informix - 切换到 Oracle、Sybase 还是继续使用 Informix?

    database - 如何维护引文数据库中的作者顺序

    mysql - SQL查询从一个表中选择一个值,从另一个表中选择另一个值并显示计数

    mysql - 将access 2007链接到mysql

    ios - 使用 parse.com 存储项目的最佳方式