0

人は Web サイトのページを開いて、品質管理タスクを実行します。あるページでは、人がスタートボタンを押すと品質管理の活動が始まります。別のページでは、ページが読み込まれるとアクティビティが開始されます。

品質管理の活動は、人が次の場合に終了する可能性があります。

  1. タスクを完了し、
  2. 不完全として保存する、または
  3. ブラウザ ウィンドウを閉じるだけです。

EndTime は、品質管理タスクの開始後 10 秒から 30 分の間で発生する可能性があります。

問題: ActivityIDStartTime、およびEndTime列を 持つテーブルがある場合、既存のレコードを更新する行為がストアド プロシージャの外で行われる場合、この情報をテーブルに保存する最良の方法は何でしょうか?レコードを挿入したのは?StartTime をキャプチャする必要がありますが、これは簡単ですが、タスクが完了してから時間が経っても、一意のアクティビティの終了時間をキャプチャする必要があり、アクティビティの EndTime を NULL から "完了"。

考慮すべきいくつかのシナリオ:

このルートは受け入れられるでしょうか...?ページの読み込み時に Insert を呼び出す proc を記述します。proc の一部として、新しいアクティビティと開始時刻を挿入し、ActivityID の値も返します (ここで説明されているメソッドの 1 つ: 最後に挿入されたレコードの ID を取得する)。Web ページが「終了」イベントに到達すると、最初の proc から返された ActivityID を渡し、最初の proc から取得した AcitivityID の終了時間を追加する proc を呼び出します。

4

1 に答える 1

1
  insert into [Table_2] ([valueStart]) values('start');
  select SCOPE_IDENTITY();

  int sqlIden = SQLcommand.execute();

  // perform task

  update [Table_2] set [valueFinish] = 'finish' where [id] = sqlIden.ToString();
于 2012-07-09T22:34:25.017 に答える