sql >> データベース >  >> RDS >> Mysql

一定時間後に行を自動的に更新します

    選択したタイムスケールに基づいて、これを管理する2つのオプションがあります。

    1. 広告に有効期限を保存し、有効期限> NOW();を含めます。広告を選択するためのクエリで(この種の「アクティブ」フィールドの要件は無効になります。

    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. Mysqlサブクエリの順序

    2. SQL Serverで日時を切り捨てるにはどうすればよいですか?

    3. ORDER BYはDISTINCTの前または後に適用されますか?

    4. サブクエリJOINでの外部クエリへの参照