Mysql
 sql >> Database >  >> RDS >> Mysql

aggiorna automaticamente la riga dopo un certo tempo

Hai 2 opzioni per gestirlo entrambe in base alla scala temporale che selezionano.

  1. Memorizza un tempo di scadenza con l'annuncio e includi scadenza> ORA(); in qualsiasi query per selezionare gli annunci (questo tipo di nega il requisito per un campo "attivo".

  2. usa un evento per gestirlo.

Il metodo 1 potrebbe richiedere ad alcuni amministratori di "ripulire gli annunci" periodicamente.

Metodo 2:non puoi ancora creare eventi in una procedura (l'ultima volta che ho controllato) ma ti consentono di impostare e dimenticare questo tipo di compiti amministrativi senza dover eseguire altri controlli e quant'altro.

Ogni evento deve avere un nome univoco altrimenti ucciderai l'evento già specificato...

esempio:

<?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);
?>

L'evento è archiviato nel database mysql e non nel tuo, quindi hai bisogno di alcune autorizzazioni a livello di amministratore per implementarlo.