[PHP-users 11635] Re: PHPでPostgreSQL のトランザクションを実行するには?

js php-users@php.gr.jp
Thu, 21 Nov 2002 09:12:18 +0900


色々ご支援頂きまして有難うございました。

pg_connectからのトランザクションの仕組みを理解することが出来ました。

Mashikiさんより

 > jsさんはなぜテーブルのロックが必要になったのでしょうか?
とありました。これは私の技量が低レベルで、PostgreSQLで食品の在庫管理を行って
いるのですが入出庫明細の件数が年間50万件程度あって現在庫数を確認するのに直接
SQLを実行して確認する分には問題ないのですが入力、レポートなどには現在ACCESS
を利用しているのですがACCESSは何故か、10万件超えるとガックリ遅くなってしいま
す。

そこで現在、抽出結果が数百件あっても2,3秒で現在庫数や月間出納表を作る仕組み
としてこういうのを
作成しています。例えばコンピュータ上の処理月が10月として現在を11月20日とする
と

A前月末在庫数 = 期首在庫数 + 4月1日から9月30日までの入庫 -  4月1日から9
月30日までの入庫 

B現在庫 = 前月末在庫数 + 10月1日から11月20日(現時点)までの入庫 - 10
月1日から11月20日(現時点)までの出庫

C棚卸数(10月31日までの在庫数) = 前月末在庫数 + 10月1日から10月31日まで
の入庫 - 10月1日から10月31日までの出庫

Dその他は期間指定で指定するのが多くAは使用しないことが多いです。

この中の前月末在庫数というのを一つのテーブルとして作っていてそこにAを流し込
んでしまえばB,Cを求めるのに
Aの間の動きを見ないで済むので結果を出力するまで数秒でやってのけることが出来
ます。

Aを作るのにロック掛けとかないとこの間に在庫問合せがあると現在庫数が正しくな
い可能性が出てきて
いちゃもんが付きそうなのでINSERTが終わるまでの間ロックしようと思いました。

PHPを使うのは在庫照会しかしない端末(現場とかモバイル)にイチイチアクセス
買ったりODBCの設定するのが
面倒なのでブラウザが良いと思い、それならPHPという経緯です。

本当は設計やチューニングをもっとレベルの高い人が行えばこんなことする必要がな
いと思いますが
今の技量ではこの辺が妥当なところです。

本当に有難うございました。