1
私は数百ものレコードを持っていますが、すべてが期限切れのdatetimeカラムを持っています。このような何か:時間に応じてデータベーステーブルを絶えず更新するには?
Name Expires Status
-----------+---------------------+--------+
Apple1 2017-05-05 10:10:15 Live
Apple2 2017-06-01 18:15:03 Live
Apple3 2017-01-01 23:59:59 Dead
Apple4 2017-01-30 23:00:01 Draft
Apple5 2017-01-30 23:00:01 Queued
私は有効期限の日時が経過した後にLive
ある任意のレコードのステータスを変更したいです。
これまでのところ、私はこれらの可能な解決策について考えている:
- は
- 毎秒は、すべてのページ要求にアプリケーションサーバー(ColdFusionの2016)を使用して、それを実行し、いくつかの更新スクリプトを実行するために、SQL Serverジョブを設定します。したがって、ページが要求されるたびに、アプリケーションの
onRequestStart()
メソッドでこの更新スクリプトが実行されます。
どちらも「Web 1.0」と思われ、おそらく非常に高価です。私は、正しい時間が到着するとすぐにスケジュールされた投稿を公開するときにFacebookが行うことをしようとしていると思いますが、効率的にそれを行うにはうまくいかないでしょう。
これを達成するにはどのような方法が良いとお考えですか?
なぜ更新しますか? sysdatetimeと比較してdatetimeをチェックしてください(同期しているか、実際のdtが気にかかっているものに基づいていると仮定します)。そして、常にテーブルを更新するのではなく、論理的にステータスを作ります。 Expires dtを取得するためにテーブルをクエリする必要があるでしょう...この時点では、有効期限が切れているかどうかを知っていますので、いくつかのロジックを読み込み/使用する列を更新する必要はありません。論理としてのdt自体。 – scsimon
@scsimon時には、人々は手動でレコードを早期に期限切れにすることがあるためです。したがって、レコードに期限を設定するオプションがアプリケーションにあります。したがって、レコードが生存しているか死んでいるかを判断する方法として日付比較を行うだけでは機能しません。 –
それは問題ありませんが、それは単なるIFチェックです。 – scsimon