[Seasar-user:2603] S2DAOによる行ロックについて

sato sato
2005年 9月 26日 (月) 19:48:52 JST


NSQ@佐藤です。

最近Seasarを使い始めたばかりで、まだ理解出来ていない所が多々あり試行錯誤
しながら使用させて貰っています。
そこで、S2DAOを使用した排他処理について質問させて下さい

S2DAOを使用してあるテーブルのある列をカウントアップしたいと考えています。

例えば以下のようなテーブルがあるとします。

UserTable
-----------------------------
ID
NAME
UPDATE_COUNT
-----------------------------

そこで「このテーブルに同一IDが存在しない場合はINSERT。同一IDが存在する場
合にはUPDATE_COUNTに1を加算する。」といった処理が行いたい場合に、
UPDATE_COUNTが最大であるレコードをFOR UPDATEで行ロックをかけた後に
UPDATE_COUNTを加算してUPDATEを行うという方法が考えられます。

テーブルにカラムを追加してVersionNoによる排他制御を行えば問題ないのです
が、テーブルへのカラム追加が行えない状況で、このような処理をS2DAOを使用
して行いたい場合にはどのようにすれば良いのでしょうか?

(ちなみに、S2DAOを使用してSQLファイルを準備して、FOR UPDATEを記述した
SQLを発行した場合にはエラーとなってしまいます。Oracleの場合、「ORA-
01002: フェッチ順序が無効です。」 )





=========================================================
株式会社 ネットスクエア
   佐藤 慎也 <E-mail:[E-MAIL ADDRESS DELETED]>
  
   〒733-0822
     広島市西区庚午中4丁目6−1セントラルビル3F
     http://www.net-squares.com/
     TEL:(082) 507 - 6266
     FAX:(082) 507 - 6267
 =======================================================
<< ISO文書管理は弊社のISO-SQUAREにお任せ下さい。       >> 
 =======================================================




Seasar-user メーリングリストの案内