0

私は図書館管理データベーススキーマを設計しています。テーブル「借りる」があるとしましょう


借りる

id
user_id
book_id
Borrow_date
due_date
isExpired
expired_day (本の有効期限が切れてからの日数)
fine


SQL トリガーは次の状況を実装できますか?
1.due_date と今日を比較し、同じであればメールを送信する-->isExpired を true にマーク
する 2.isExpired が true にマークされている場合-->今日と due_date の差を比較し、expired_day を
更新する--->update罰金 (expired_days * 5)

4

2 に答える 2

2

トリガーは、テーブルまたは行で何かが発生した場合にのみ起動します。継続的に(または毎日)発火することはありません。テーブルに何も起こらない場合、トリガーは起動しないため、チェックを実行できません。

したがって、説明するトリガーは、最初にレコードを行に挿入するときに機能しますが、期限後に起動して有効期限と罰金を確認するトリガーを自動的に使用する方法はありません。

ほとんどの場合、コードを含むストアドプロシージャを設定し、それをスケジュールに基づいて実行する方法を見つける必要があります。

次のリンクは、その設定方法について説明して います。SQLサーバーでのストアドプロシージャのスケジュールされた実行

于 2012-10-09T01:51:25.863 に答える
0

ライブラリのすべてのレコードを毎日チェックし、それに応じて更新したいので、毎日のジョブを作成してエージェントをスケジュールし、特定の時間を設定して、この毎日のジョブが毎日自動的に実行されるようにすることをお勧めします。
pls 注 : アプリケーションが 1 日のうちで最も使用されていないと思われる時間帯を選択することを忘れないでください。

エージェントの作成: http://msdn.microsoft.com/en-us/library/ms181153(v=sql.105).aspx

于 2012-10-09T02:31:48.490 に答える