sql >> Databasteknik >  >> RDS >> Mysql

uppdatera rad automatiskt efter en viss tid

Du har två alternativ för att hantera detta båda baserat på den tidsskala de väljer.

  1. Lagra en utgångstid med annonsen och inkludera utgångsdatum> NOW(); i alla frågor för att välja annonser (denna typ förnekar kravet på ett "aktivt" fält.

  2. använd en händelse för att hantera detta.

Metod 1 kan kräva att någon administratör regelbundet "städar bort annonser".

Metod 2 - du kan inte skapa händelser i en procedur ännu (sista gången jag kollade) men de tillåter dig att ställa in och glömma den här typen av administratörsuppgifter utan att behöva köra andra kontroller och vad som inte kan göras.

Varje händelse måste ha ett unikt namn annars kommer du att döda den redan specificerade händelsen...

exempel:

<?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 lagras i mysql-databasen och inte din egen så du behöver några administratörsnivåbehörigheter för att implementera.



  1. C# anslut till mysql genom användarkontroll

  2. Ny MySQL-drivrutin orsakar java.sql.SQLNonTransientConnectionException:CLIENT_PLUGIN_AUTH krävs

  3. Hur man kontrollerar om användaren redan finns i MySQL med PHP

  4. Summa flera rader datumskillnad Mysql