2017-05-11 6 views
0

ASP.NETでログインページを使用して作成したページがあります。ログイン後に何かを有効にするオプションを作った。この値は、デフォルトでSQLデータベースで "False"に設定されている。ユーザーがアクティブ化ボタンをクリックすると、C#のクエリを使用してこの列が「True」に更新されます。C言語を使用して1時間後に自動的にSQLデータのレコードを更新する

私の問題は、「True」に値を更新した後、ユーザーがログインしていても1時間後に自動的に「False」として更新されるはずです。 C#とSQLを使用してこれを行うにはどうすればよいですか?

+0

セッションの有効期限に似た何かを実装していますか?ウェブサーバー自体で設定できますか? –

+0

実際に私はチケット予約申請をしています。ユーザーはチケットを予約するようリクエストします。管理者はログインし、すべてのリクエストを表示できます。管理者は特定のリクエストに対して[有効化]をクリックし、1時間有効になります。この1時間以内に、管理者はチケットを予約し、チケットの詳細をアップロードする必要があります。 1時間が経過すると、起動されたリクエストは再びfalseになります。 – Mano

答えて

3

最も簡単な解決策は、データ型をdatetimeに変更し、ユーザーがアクティブ化ボタンを最後にクリックしたときの値に設定することです。その後、自動的に更新する必要はありません。値が最後の1時間以内であるかどうかを確認するだけです。

+0

しかし、私は時間をチェックして更新したくありません。そのためには、私は右にトリガする必要があるイベントが必要でしょうか? SQLデータを自動的に更新したい。起動時にプロシージャなどを設定するのと同じです。それから1時間後に自動的に実行されます – Mano

+1

ええ、私はそれを持っています。しかし、あなたが求めているのは、まず間違った解決策をどのように実装するかです。あなたは旗を掲げて1時間はそれを維持する必要があります。さて、それを行うにはいくつかの方法があります。そのほとんどは、特定のフラグが立てられたときに日付と時刻を保存する必要があります。私が示唆しているのは、その日時だけを使用し、フラグを戻すことを心配する必要を省くことです。それが最も簡単な解決策です。私が何を意味するかを見るためにクマールの答えをチェックしてください。 –

1

のALTER TABLEが

その列が真か偽である時はいつでもActiveDate日時

と呼ばれる1つの以上の列を追加するには、単に今スケジューラを作成

ActiveDate

で現在の時刻を設定します。 私の例は1時間ごとに実行されるウィンドウスケジューラで構成されています

あなたは単にあなたのprocを起動するだけのコンソールアプリケーションでプログラムを作成してください。

このprocはすべて真になります。

このコンソールをexeに変換し、Window Schedularに接続します。

+0

私はスケジューラが毎分実行する必要があると思います。 13:15にアクティブにした場合、タイムアウトを14:15でなく14:00にしたいと思っています。 –

+2

@ MarkusDeibel、申し訳ありません、私はこのscenario.runningスケジューラー毎分を忘れて=スケジューラーを実行し続ける。それから私はZohar Peledのソリューションと一緒に行くと思います。 – KumarHarsh

0

は、単にあなたがちょうどあなたの必要性によると、クエリを変更し、1時間ごとに

でスケジュールを設定する必要がHere の手順に従いますか、更新時にトリガーを作成することができますし、時間

の遅延のために、このコードを追加します。
DECLARE @MyDateTime DATETIME 
SET @MyDateTime = DATEADD(HOUR,1,GETDATE()) 
WAITFOR TIME @MyDateTime 
SELECT GETDATE() CurrentTime 
+0

以下に述べるように、スケジュールを1時間に設定しても、1時間のタイムアウトは必要ありません。ユーザーがアクティブ化をクリックするタイミングに応じて、1〜59:59のタイムアウトが与えられます。必要な細かさに応じて毎分または毎秒実行する必要があります。 –

+0

@MarkusDeibelこれに続く別のリンクを追加しました –

+0

OPがSQL-Serverを参照している間に、追加したリンクがMySQLの回答をポイントします。だから、これは解決策にはあまり役立たないでしょう。 –

関連する問題