【问题标题】:Auto delete Expired Data Row in MySQLMySQL中自动删除过期数据行
【发布时间】:2014-08-25 10:40:43
【问题描述】:

我在数据库中的 bonusdetails 表中添加了一些奖励代码行。所有奖励代码都有有效期。

是否可以通过php自动删除其到期日期已到的行?我使用的代码是(有效期为日期):-

$query = "select * 
          from bonusdetails 
          where BonusType='Match Bonus' 
          order by Validity ASC limit 0,30;";

$result = mysql_query($query);

echo '<table>';
.....
.....
.....
echo '</table>';

?>

【问题讨论】:

  • 什么权证到期了? 1秒? 10分钟? 500 年?
  • 你不应该使用 mysql_query 函数。这些功能已弃用。在此处查看如何替换它们:php.net/manual/tr/function.mysql-query.php
  • 我认为,我们可以为此使用 cron

标签: php mysql sql


【解决方案1】:

您可以尝试为此使用 MySQL 事件:

CREATE EVENT IF NOT EXISTS `dbName`.`eventName`
ON SCHEDULE
EVERY 1 DAY // or 1 HOUR
COMMENT 'Description'
DO
BEGIN

DELETE FROM `dbName`.`TableName` WHERE `expireDateCol` < NOW();

END

请注意,需要在您的服务器上启用 MySQL 事件调度程序:

SET GLOBAL event_scheduler = ON;

【讨论】:

  • Event 在@user2077650 场景下优于Trigger。
  • 你知道如何在sequelize中实现事件吗?
【解决方案2】:

您可以创建Trigger,它会在每次有人更新您的数据时删除您的记录。

DELIMITER $$
Create Trigger trigger_name
  AFTER UPDATE ON bonusdetails
  FOR EACH ROW BEGIN

  DELETE bonusdetails
  WHERE Validity > Now();

END$$ 
DELIMITER ;

【讨论】:

    【解决方案3】:

    此查询将删除 Validity 中的日期已过的行。

    $query = "DELETE FROM bonusdetails 
              WHERE BonusType = 'Match Bonus' 
              AND Validity < '".date('Y-m-d', time())."'";
    

    如果Validity 是DATETIME:

    $query = "DELETE FROM bonusdetails 
              WHERE BonusType = 'Match Bonus' 
              AND Validity < '".date('Y-m-d H:i:s', time())."'";
    

    之后:

    • 您可以在代码中调用此查询(但每次都会调用此查询,因此这不是最佳解决方案)
    • Make a cron 每天调用一次(更好)

    【讨论】:

      【解决方案4】:
        $conn = new mysqli($servername,$username,$password,$dbname);
        $query = "DELETE FROM Urls WHERE created_at < now()";
        $conn->query($query);
      

      这可能会有所帮助

      【讨论】:

        猜你喜欢
        • 2016-08-24
        • 2017-01-09
        • 2021-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多