伝票番号、採番管理データ、レコードロック
いつもお世話になっております。
全社を通して、売上伝票番号は、1からの連番だったとします。
伝票番号採番レコードは1件だけで、最終売上伝票番号が保存されていたとします。
新規伝票登録の時は、このレコードから最終番号+1を新規伝票番号とし、
伝票番号採番レコードにも保存する物とします。
複数台から同時に新規の伝票を保存したとして、
ほんの一瞬だけレコードロック解除待ちが出るけれど
ユニークな番号が無事採番されます。
以上のような作りの場合、こういった動きで正解でしょうか?
-
ISHIJIMAさん ありがとうございます。
dbMAGIC V8 + Pervasive だったシステムを
xpa4.6.1 + SQL Server にマイグレーションしたシステムが
今月末から本番でして。15台でいっせーので保存実験などがまだ出来ていなくて。
採番部分だけはトランザクション完結させてから、
実データ保存に突入するといった作りに変えました。 -
伝票番号の採番用データソースを用意しての採番管理だと思います。
条件でSQLServerの場合、以下のようにしています。採番の番号を取得・最終売上伝票番号を更新するプログラムを作成しコールで呼び出して、以下のような特性にしています。
〇タスク特性
トランザクションモード:物理
トランザクションの開始:タスクの前の前
ロック方式:即時
エラー発生時:復旧
〇データソース特性
アクセス:書込
共有:なし
オープン:標準ロックが一瞬発生しますがすぐに外れて使えるようになります。
-
hira様、詳細にありがとうございます。
ほんの一瞬完全に占有するという考えですね。
私の場合、採番データはキーを複数用意して、売上伝票採番、入金伝票採番などを兼用する事が多いですけど、WWNで開く事が多いです。
WRNも全然使いませんが、WWNもいいのでしょうね。
こういった内部の作りもお二方アドバイスくださり感謝です。
-
採番プログラムで書き出しリンクしている採番管理データが
WWN キャッシュ=Yes になっていたので、
WWN キャッシュ=No に変えてみました。採番を行うサブPGを同時にPC20台ぐらいで呼んだら
19件ぐらいレコードロック解除待ちが出るのでしょうね。
でも全てユニークな番号が採番されて問題は実質生じないでしょうね。
サインインしてコメントを残してください。
コメント
4件のコメント