[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 メーリングリストの案内