[pgsql-jp: 27680] テーブルにロックがかからない
shushu2
shushu2 @ yahoo.co.jp
2002年 10月 18日 (金) 15:23:26 JST
外川と申します。PHPのソースコードなので
PHPのMLに書くべきかと思いましたがSQLの質問なので
こちらに質問させていただきました。ご了承くださいませ。
下記のような記述でテーブルロックのテストをしていたのです
が
2つのブラウザで時間差でアクセスするとインサートされる
IDがだぶって登録されてしまいます。
私のイメージですと
Aのブラウザで下記PGを実行すると
Bのブラウザで実行された下記PGはAのブラウザより
実行されたPGがCOMMITされるのを待って
最新IDを取得してインサートしてくれると思ったのですが。
。
どのような記述をしたら同じPGを時間差でアクセスした場合
IDが競合せず採番できるのかご教授ください。
シリアル型使えば簡単かと思うのですが事情があって
テーブルの構成は変えられないんです。。。
よろしくお願いします。
$conn->query("BEGIN");
$conn->query("LOCK TABLE test IN ACCESS SHARE MODE");
for($i=0 ; $i<300 ; $i++){
// 最新ID主特
$sql="select max(id)+1 from test";
$conn->query($sql);
$conn->next_record();
$id = $conn->f("max");
$sql = "insert into ttt values($id)";
$conn->query($sql);
}
$conn->query("END");
__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo! http://bb.yahoo.co.jp/
pgsql-jp メーリングリストの案内