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

MySQLの値を期限切れにする方法は?

    resetkeyの横 列はDATETIMEを配置します おそらくexpiresと呼ばれる列 。

    次に、新しいリセットキーを挿入するたびに、expiresにも値を挿入します。

    INSERT INTO forgot (resetkey, expires) VALUES (whatever, NOW() + INTERVAL 48 HOUR)
    

    テーブルからリセットキーを読み取る直前に、次のようにします。

    DELETE FROM forgot WHERE expires < NOW()
    

    そうすれば、期限切れのキーは表示されません。有効期限が切れると、常に消去されます。

    これで、ユーザーが用意したリセットキーを検索して何かを行うことができます。有効期限が切れている場合は、「リセットキーの有効期限が切れています」とユーザーに通知できます。しかし、それは悪い考え ...セキュリティのために、リセットキーなどのセキュリティトークンが無効である理由をユーザーが理解できるようにするべきではありません。 「そのリセットキーは正しくありません」とだけ言ってください。

    これにより、期限切れのトークンを含む一部の行がテーブルに残る可能性が残りますか?はい。ただし、トークンを使用する前に期限切れのものを消去する手順に従うと、アプリが実際にそれらを読み取って使用することはできません。期限切れのトークンが役に立たない場合でもテーブルに保持しないようにする理由がある場合は、EVENTまたはその他の定期的にスケジュールされたジョブを設定してDELETEを実行できます。 私が言及した声明。



    1. すべてのDBAが知っておくべき4つの主要なデータベース監視アクティビティ

    2. 'ANY'を含むPostgreSQLクエリが機能していません

    3. 検索クエリでハイフンを使用した全文検索を許可する方法

    4. Oracle 10gは、日付で5桁の年を受け入れます