[pgsql-jp: 25491] Re: テーブルのロック?処理の順番待ち方法について

Tsuru.E tsuru @ oita.hht.co.jp
2002年 4月 1日 (月) 18:59:56 JST


こんにちは、つるつると申します。

他からSELECTさせないので有れば、トランザクションを張った後に、
以下のロックモードを使うのはどうでしょうか。

LOCK TABLE [table_name] IN ACCESS EXCLUSIVE MODE;

一番きついロックのため、ロックを掛けたテーブルは他からSELECTすら
出来なく成ってしまいますが・・・・

#もっと上手い方法が有るかもしれませんので、他の方の方法を期待したですね。
#間違等があった場合は、ごめんなさいです。

それでは。

-----Original Message-----
From: pgsql-jp-admin @ ml.postgresql.jp
[mailto:pgsql-jp-admin @ ml.postgresql.jp]On Behalf Of seta
Sent: Monday, April 01, 2002 4:45 PM
To: pgsql-jp @ ml.postgresql.jp
Subject: [pgsql-jp: 25489] テーブルのロック?処理の順番待ち方法について


いつも、ML拝見させていただいてます。setaです。

やっている処理は、ユーザーへのID発行です。
あらかじめテーブルに異なるIDが入ってます。

table1
|ID|
aaa1
aaa2
・・・

a.phpでの処理
1.テーブルの一番上のIDを読み出す。(select文)
2.そのIDをクライアントにメールで送信。
3.テーブルから1.で読み出したIDの行を削除。(delete文)

単純な処理なんですが、このa.phpにたくさんの同時アクセスがあった場合、
クライアントに同じIDを発行してしまうという問題が出てきました。

一人?がこの1.phpを処理(DBの読み出し・削除)を終えるまで順番待ち、
もしくは、テーブルにロックをかける方法ってありますでしょうか?

ご教授よろしくおねがいします。

---------------
seta
seta @ de-net.com
---------------





pgsql-jp メーリングリストの案内