[pgsql-jp: 34523] Re: データ登録時の重複チェックについて

tomson tomson_lpcjp @ yahoo.co.jp
2004年 12月 21日 (火) 23:48:53 JST


こんばんは。tomsonと申します。
そもそもAPサーバーが使えるような環境であれば、わざわざロックをかける必要があるのでしょうか?

>Webアプリケーションで、商品の登録をさせようとしているのですが、一人の人が同日に
>同じ商品を登録できないよう、テーブルを「EXCLUSIVE MODE」でロックをかけ、チェッ
>クを行っています。

Javaの簡単なプログラムを書いて、

例えば、Statement stat = conn.createStatement(ResultSet.CONCUR_UPDATABLE);
ResultSet rs= stmt.executeQuery("SELECT regist_date as max_date FROM goods WHERE member_code='00000' ORDER BY max_date desc");

などとし、レコードセットを取得します。

>	上記SQLで取得した時間と、現在時刻を比較し、取得した日付から1日以上経過しているならデータ登録

上記のレコードセットの中で、カーソルを移動し、java.util.Calendarクラスを利用し
Calendar rightNow = Calendar.getInstance();
で現在時刻を取得し、

if(Calendar.DATE-rs.getString("regist_date")>=1){
rs=stmt.executeQuery("DELETE from goods WHERE member_code='00000'");
}

などとすれば、テーブルにロックをかける必要は無く、しかも定期的に実行するように(例えば日時更新のタイミングで)
プログラムしてやれば、チェックする手間も省ける、というわけです。

------------------------------------------------------------
Hanrin Keisin   Email   tomson_lpcjp @ yahoo.co.jp




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