私は少し奇妙な状況にあり、テーブルのフィールドにデータを入力するのに苦労しています。また、私はSQLServerにかなり慣れていないことにも言及する必要があります。
使用しているもの:SQLServer2008データベースで作業しています。懸念されるテーブルは、、、PO_APPROVAL_LOG
およびの2つPO_HDR
です。
ここで実行されているプロセスは、新しい発注書の作成です。場合によっては、POを作成するためにマネージャーの承認が必要になります。Active Directoryに対してマネージャーを認証するWinForm(C#)を使用しています。マネージャーが特定のグループのメンバーである場合、POは承認されます。
私の状況:サードパーティのアプリケーションが使用されており、アプリケーションで保存イベントが発生する前に実行される検証コード(上記)を作成しています。特定の基準が満たされると、検証コードが返さTRUE
れ、アプリケーションが保存を続行できるようになります。保存が開始されると、データベース内のいくつかのテーブルが挿入されますPO_HDR
。イベントが発生する順序を変更することはできません。これらの検証ルールのみを記述できます。SUCCESS
アプリケーションは、プロパティがTRUE
またはに設定されているコードから特定のオブジェクトを受け取るまで続行されませんFALSE
。
私が抱えている問題PO_APPROVAL_LOG
は、PO承認をテーブルに記録することに関連しています。現在、PO_APPROVAL_LOG
マネージャーが資格情報を送信するときにテーブルが挿入されます。これは、PO_HDR
データが入力される前に発生します。を含める必要があります。そのためには、データが入力PO_HDR.PO_NUMBER
されるまで待ってから値を取得し、対応するエントリを更新する必要があります。実際に承認が必要なPOはごくわずかであり、テーブルには多くのアクションが表示されないはずです。PO_HDR
PO_NUMBER
PO_APPROVAL_LOG
PO_APPROVAL_LOG
PO_HDR
テーブルにトリガーを作成できません。
実験のために、aを使用してAFTER INSERT
トリガーを作成し、データを入力する機会があった後にフェッチできるかどうかを確認しました。(はい、トリガーでひどい考えであることを私は知っています、それはただ遊びデータベースで実験することでした)。挿入とそれに続くトリガーの実行が終了するまで、アプリケーションが検証コードから応答を受け取らなかったため、これは機能しませんでした。PO_APPROVA_LOG
waitfor delay
PO_NUMBER
PO_HDR
waitfor delay
TRUE
私の質問:SQLエージェントの仕事は可能な解決策でしょうか?1、2分ごとに実行する必要があります。私の懸念の1つは、これはデータベースに非常に負担をかけることでしょうか?ジョブが実行され、ログテーブルを更新するためにプロシージャを呼び出す必要があるかどうかを判断した場合(で1つ以上のNULL
PO_NUMBER
値が見つかりましたPO_APPROVAL_LOG
)、おそらくそれは機能する可能性があります。
他に何かアドバイスはありますか?これは私にしばらくの間問題を与えてきました。
不明な点がございましたら、お問い合わせください。ありがとう!