11

経験豊富な開発者にとっては非常に単純なシナリオかもしれませんが、初心者として私は長い間これをぶらぶらしてきました。ユーザーがパッケージを購入できるWebサイトをasp.netで作成しています。これらのパッケージには、いくつかの有効期限が関連付けられています(たとえば、購入後2か月、6か月など)。

問題は、購入日に基づいて計算したのとまったく同じ日時に各パッケージを期限切れにする方法です。このことを行う方法は?

SQL Server ExpressEdition2008とasp.net4.0を使用しています。

4

2 に答える 2

12

レコードを削除するのではなくWHERE、有効期限に基づいてレコードを除外する句を配置することができます。

SELECT PackageName
FROM Package
WHERE ExpiryDate>GETDATE()

ただし、それでもデータベースからそれらを削除したい場合は、毎日/時間などに実行されるSQLジョブを配置して、期限切れのレコードを削除することができます。

DELETE FROM Package
WHERE ExpiryDate<GETDATE()
于 2012-08-23T12:18:10.620 に答える
1

有効期限の意味によって少し異なります。データを削除するか、レコードにフラグを付けるか、ユーザーの画面からデータを非表示にするかを指定します。

いずれの場合も、有効期限を列としてテーブル(?packages)に追加し、計算された有効期限をこの列に保存する必要があります。

次に、次のようなオプションがあります。

  • レコードの有効期限が切れたら、ジョブを実行してレコードを削除/期限切れにしCURRENT_TIMESTAMP is > ExpiryDateます(つまり、SQLExpressにはSQLAgentがないため、Windowsサービスを作成するか、Windowsタスクスケジューラに接続してこれを行う必要があります)。
  • または、アプリケーションを変更してExpiryDateの値を「チェック」し(例DateTime.Now >= ExpiryDate)、ユーザーをロックアウト/UIからパッケージを非表示にします。
于 2012-08-23T12:20:55.590 に答える