Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zeile nach einer bestimmten Zeit automatisch aktualisieren

Sie haben 2 Optionen, um dies zu verwalten, beide basierend auf der ausgewählten Zeitskala.

  1. Speichern Sie eine Ablaufzeit mit der Anzeige und fügen Sie das Ablaufdatum> JETZT (); in allen Abfragen zur Auswahl von Anzeigen (diese Art negiert die Anforderung für ein "aktives" Feld.

  2. Verwenden Sie ein Ereignis, um dies zu verwalten.

Methode 1 erfordert möglicherweise, dass ein Administrator regelmäßig Anzeigen bereinigt.

Methode 2 - Sie können noch keine Ereignisse in einer Prozedur erstellen (das letzte Mal, als ich es überprüft habe), aber sie ermöglichen es Ihnen, diese Art von Verwaltungsaufgaben festzulegen und zu vergessen, ohne andere Überprüfungen und andere Dinge ausführen zu müssen.

Jedes Ereignis muss einen eindeutigen Namen haben, sonst beenden Sie das bereits angegebene Ereignis...

Beispiel:

<?php

$qry = "insert into ads values ( 'x', 'y', 'z' );"; 
/* db execute qry (pdo or what ever) */
$adId = // retriev a unique reference for ad.
$days = $_POST['expire'] == 16 ? 16 : 8;

$qry = "CREATE EVENT updateAd_".$adId."
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL ".$days." DAY
    ON COMPLETION NOT PRESERVE
    DO
    update ads set active = 'false' where ad_id = ".$adId.";";
// db execute qry (pdo or what ever);
?>

Das Ereignis wird in der mysql-Datenbank und nicht in Ihrer eigenen gespeichert, daher benötigen Sie einige Berechtigungen auf Administratorebene, um es zu implementieren.