Mysql
 sql >> база данни >  >> RDS >> Mysql

автоматично актуализиране на реда след определено време

Имате 2 опции да управлявате това и двете въз основа на избрания от тях срок.

  1. Запазете време на изтичане с рекламата и включете изтичане> СЕГА(); във всякакви заявки за избор на реклами (този вид отрича изискването за „активно“ поле.

  2. използвайте събитие, за да управлявате това.

Метод 1 може да изисква от администратор периодично да „изчиства рекламите“.

Метод 2 – все още не можете да създавате събития в процедура (последния път, когато проверих), но те ви позволяват да задавате и забравяте този вид администраторски задължения, без да се налага да изпълнявате други проверки и какво ли още не.

Всяко събитие трябва да има уникално име, в противен случай ще убиете вече посоченото събитие...

пример:

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

Събитието се съхранява в базата данни на mysql, а не във вашата собствена, така че имате нужда от някои разрешения на ниво администратор, за да приложите.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ProgrammingError:SQLite обекти, създадени в нишка, могат да се използват само в същата нишка

  2. Как да премахнете auto_increment от таблица на mysql

  3. Защо mysql_escape_string е силно обезкуражен?

  4. Принудително съвпадение на низовете за подготвени изрази за PDO

  5. Най-добрият начин за справяне с проблемите с паралелността