【问题标题】:Can database remove rows itself?数据库可以自己删除行吗?
【发布时间】:2023-03-09 07:49:01
【问题描述】:

数据库可以根据条件自行删除行吗?

通常我已通过用户操作从数据库中删除数据,但现在我希望数据库自行完成。它应该能够在没有用户的情况下删除带有时间戳的行。每次当 row 的时间戳比 NOW() 旧时,它都会自行删除。

谁能为我的项目推荐任何数据库或(工具)?

我将在这个项目中使用的工具严格来说是 PHP、Javascript、HTML 和 CSS。

我对 MySQL 很熟悉,但是我没有从网上找到任何可以回答的信息 呃我的问题。至少不是为了我的事业。


目前我已经设置好了

用户使用startdateenddate(均为mm/dd/yyyy格式)将“task”添加到MySQL“tasks”表中,active为1。

我需要创建一个事件,每天(在午夜)检查“任务”表中的每一行是否早于 enddate,如果将 active 更新为 0,则保持原样。

【问题讨论】:

标签: database database-design


【解决方案1】:

你可以试试这个条件:

WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY)
So that the whole SQL script looks like this:

CREATE EVENT delete_event
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
ON COMPLETION PRESERVE

DO BEGIN
      DELETE messages WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY);
END;

【讨论】:

  • 这个函数是要循环还是我需要在 7 天后再次手动运行它?
  • MySQL 使用一个称为事件调度线程的特殊线程来执行所有已调度的事件。它按计划时间执行。
  • 这个功能可以通过phpmyadmin设置吗?
  • 您可以使用 PhpMyAdmin 或 MySQL 命令提示符来处理事件。
  • 它按计划时间执行。不需要运行查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
相关资源
最近更新 更多