sql >> Databáze >  >> RDS >> Mysql

automaticky aktualizovat řádek po určité době

Máte dvě možnosti, jak to spravovat, a to na základě zvoleného časového rámce.

  1. Uložte s reklamou dobu platnosti a zahrňte expiraci> NOW(); v jakýchkoli dotazech k výběru reklam (tento druh neguje požadavek na pole „aktivní“.

  2. ke správě použijte událost.

Metoda 1 může vyžadovat, aby někteří správci pravidelně 'čistili reklamy'.

Metoda 2 – v proceduře ještě nemůžete vytvářet události (když jsem to kontroloval naposledy), ale umožňují vám nastavit a zapomenout na tento druh povinností správce, aniž byste museli spouštět další kontroly a co ne.

Každá událost musí mít jedinečný název, jinak zrušíte již zadanou událost...

příklad:

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

Událost je uložena v databázi mysql a ne ve vaší vlastní, takže k implementaci potřebujete určitá oprávnění na úrovni správce.



  1. Distribuovanou transakci nelze zahájit

  2. SQLSTATE[HY000] [2002] Pokus o připojení se nezdařil.. - Při pokusu o připojení z místního ke vzdálenému serveru

  3. Přidružování tabulek pomocí databáze místností v Android Studiu

  4. Jak nainstalovat SQL Server na SUSE 12