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

automatisk opdatere række efter et bestemt tidspunkt

Du har 2 muligheder for at administrere dette begge baseret på den tidsskala, de vælger.

  1. Gem en udløbstid med annoncen og inkluder udløb> NU(); i alle forespørgsler for at vælge annoncer (denne slags negerer kravet om et "aktivt" felt.

  2. brug en begivenhed til at administrere dette.

Metode 1 kan kræve, at nogle administratorer "rydder op i annoncer" med jævne mellemrum.

Metode 2 - du kan ikke oprette hændelser i en procedure endnu (sidste gang jeg tjekkede), men de giver dig mulighed for at indstille og glemme den slags admin-opgaver uden at skulle køre andre kontroller og hvad-ikke.

Hver begivenhed skal have et unikt navn, ellers dræber du den allerede specificerede begivenhed...

eksempel:

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

Hændelsen er gemt i mysql-databasen og ikke din egen, så du har brug for nogle tilladelser på administratorniveau for at implementere.



  1. MySQL - Problemer med at oprette brugerdefineret funktion (UDF)

  2. Spring + Hibernate:Forespørgselsplan Cache Hukommelsesbrug

  3. PHP/Apache:PHP Fatal fejl:Kald til udefineret funktion mysql_connect()

  4. Indstille tabeltegnsæt/sortering ved hjælp af dvaledialekt?