0

使用しているソケットサーバーで動作する基本的なログイン機能を備えたColdFusion9でコーディングされたCMSがあります。最近、支払い付きの「VIP」サブスクリプションを設定しましたが、2か月が経過した後にサブスクリプションを削除するSQLがないことに気付きました。これが私の基本的なリクエストです。のタイムスタンプ値date_purchasedが2か月前の場合、自動的に実行するSQLが必要です。vip_purchasesセッションユーザー(ユーザーのみ)の行を削除し、列vip0inに更新する必要がありますusers

これは、セッションのユーザー名に対してのみ、タイムスタンプが2週間前の場合、およびVIPの値が。の場合にのみ実行する必要があります1。私は次のように考えていました:

update users set vip = 0 where username = session.username if vip = 1 if date_purchased = 2 months old

これはSQLではなく、もう少し明確にするためのものだと思います。

4

2 に答える 2

1

(MySQL データベースの内部ではなく) Coldfusion を介してこの繰り返し発生するタスクを実行する予定がある場合は、Coldfusion Administrator を介してスケジュールされたタスクをセットアップする必要があります。このタスクは、スクリプトを 1 日 1 回起動して、古いアカウントをすべてクリーンアップすることができます。

決定したら、タスクを含む .cfm または .cfc ファイルを作成できます。

これは、ロジックを実行する場所に応じて、cfquery または cfstoredproc を含む単純なファイルにすることができます。cfquery は Coldfusion の Web サーバーでロジックを実行し、cfstoredproc はデータベース サーバーに MySQL ロジックをデータベース サーバーで実行するように要求します。ストアド プロシージャとして実行することをお勧めします。

この場合、ユーザー名を確認する必要さえありません。SELECT をループして、vip = 1 で date_purchased の有効期限が切れているすべてのユーザーを UPDATE します。

于 2012-05-08T15:25:04.457 に答える
1

近い。:)

UPDATE users
SET vip = 0
WHERE username = sessionname 
AND vip = 1 
AND date_purchased <= (today - number of days wanted)

WHEREtoday -部分)の最後の部分を、必要な時間枠条件に置き換える必要があります。あなたの投稿は、同じ文脈で言及2 weeks oldされているため、紛らわしいです。2 months old

于 2012-05-07T20:44:43.637 に答える