Q81:在庫管理における、製品マスター等の数量追加更新処理について(在庫管理において、製品マスター等の数量追加更新処理について
Q81-1:
製品の在庫管理を行う場合、ある月の生産データからMYSQLで集計した結果を製品マスターに書き込み、生産数量、使用数量により原料在庫を把握する場合、製品マスターデータでの数量とトランザクション内のMYSQLで集計した数量を合計して書き込みしたいのですが、マスター更新処理について、一般的にどういう対策をされているか(MYSQLで行う方法、又はMZで行う方法) ご指導いただくと参考になります。
A81-1:
お問い合わせの件、データベースの構成、システムの構成等の違いにより対応は様々です。
いずれの場合も、重要な点は、生産データと製品マスターデータの整合性であると思います。
処理は、生産データの取得、現在の生産数量・使用数量の取得、それらの合計、製品マスターデータの更新という手順になると思います。
もし、生産データとマスターデータが、同一データベース内に存在する場合でしたら、可能な限り一つのSQLコマンド、または、一つのトランザクションで処理する方法が妥当であると思います。一つのトランザクション処理に記述できれば、途中で処理に失敗した場合にもロールバックして、更新前の状態に戻すことが可能なためです。これによりデータの整合性を保つことができます。ただし、トランザクション処理の方法や機能等は、個々のデータベースシステムに大きく依存します。
一方、生産データとマスターデータとがそれぞれ異なるシステムに存在する場合(例えば、生産データがMySQLに存在し、製品マスターデータがAccessに存在する場合など)、または、同一データベース中にデータが存在しても一つのトランザクション処理で記述できない場合には、アプリケーション側(MZ側)で整合性を保つように処理を作成する必要があります。
もし、両データが(異なる)データベースシステムに存在する場合には、それぞれのトランザクション処理のコミットのタイミングを工夫することにより解決できる場合があるかもしれませんが、通常は何らかの形で更新前のデータを確保しておき、エラーが発生した場合に元に戻す処理が必要になると思います。
こちらにつきましては個々に対応が異なり決まった方法はありませんので、アプリケーションを作成される方に個々に対応していただくしかございません。
あまり明確な回答になっておりませんことをお許しください。