1

Shoppping List次のような列を持つテーブルを取得しました。

shopID, Product, DateTimeShopped, PaiedOrNot, ListStatus

私の要件は、現在の日時を と比較することDateTimeShoppedです。ショッピング リストが 5 日経ってもまだ支払われていない場合は、自動的に にラベルListStatusを付けますBlocked

SQL Server のトリガー内で時間の問題を処理するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

4

短い答え。できません。

長い答え。トリガーから単純なステートメント以上のものを実行することは可能ですが、これは最適な場所ではありません。

別のオプション。データを別のテーブルに挿入し、Sql Agent からストアド プロシージャを実行して、それに応じてアクションを実行します。

于 2012-11-20T17:19:51.483 に答える
1

SPを作成するShoppingListSP

declare @current datetime    
set @current = (select GETDATE() )

if ( datediff(@DateTimeShopped,@current ) > 5)
begin
    update [Shopping List] set ListStatus = 'Blocked' where id=123123
end

次に、このSPをバックグラウンドで1時間程度ごとに実行するSQLジョブを作成します。

exec ShoppingListSP

行ごとにデータセットを操作するには、カーソルも使用する必要がある場合があります。

于 2012-11-20T18:26:32.350 に答える