
初めて投稿するものです。
Java で DB 挿入処理 (会員登録) で悩んでおります。
DB はPostgreSQL8です。
挿入しようとしている会員テーブルは以下のようなレイアウトです。
会員テーブル
・会員ID 主キー
・ログインID NOT NULL(*)
・メールアドレス NOT NULL(*)
・会員名
・...
※(*)にはユニーク制約を付けています。
会員IDはPostgreSQLのシーケンスで採番するため、
排他ロックは不要であると思っております。
ですが、ログインIDとメールアドレスは
ユニークであるため、排他制御して重複
チェックしなければならないと思っています。
ユニーク制約を張っているため、例外が
発生して判定するというアイデアもあるとは
思いますが、例外で重複判定するのは
できれば避けたいと思っております。
例外以外で安全に重複チェックする
場合、どのように排他制御するべきでしょうか?
そもそも、排他制御せずに重複チェックを
安全にする方法はあるのでしょうか?
ユーザーが多いサイトの場合、テーブルを
ロックすると遅くなるような気がします。
ご教授よろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
PostgreSQLをよく知らないので、言葉が多少違うかもしれません。
未使用のとあるログインIDを使いたいという人が二人同時に登録作業するケースを想定すると、更新排他は必須です。ただ、会員テーブル全体を更新排他する必要はなく、登録制御用のレコード(例えば主キー=00000)を更新排他すれば、登録処理が同時に動くことはないので十分です。
(1) 一般のリクエスト
参照排他で会員テーブルをアクセスする
(2) 登録リクエスト
00000レコードに更新排他を掛け、会員テーブルを参照排他で重複がないかチェックし、無ければインサートする。
もしかしたら、登録制御用のレコード(上記00000)は別に1レコードだけの専用テーブルを作った方が良いのかもしれません。
ご回答本当にありがとうございました。
登録制御用のテーブルというのは良いアイデアかもしれませんね!
これを使用すれば登録以外の処理がロックされることもないですね。
ありがとうございます。
本当に参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- その他(データベース) accessについて 2 2022/05/31 16:58
- その他(データベース) MariaDB データベースのユニークIDが偶数で生成されてしまう 1 2023/04/17 15:35
- MySQL SQLで日付別のIDを生成するには 3 2022/10/09 10:34
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- 会社設立・起業・開業 e-Gov電子申請アプリケーションからGビズIDのアカウントをログアウトしたい 1 2023/07/04 20:21
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
- その他(IT・Webサービス) Yahoo!でログインしようとするとなぜか「不正利用が疑われる操作もしくは行為が検知されたため、利用 5 2022/11/01 16:07
- ハッキング・フィッシング詐欺 OKWAVEのログインと会員登録と新規登録 1 2023/04/10 17:09
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
Accessにインポートしたら並び...
-
Accessの重複クエリで最小以外...
-
テーブルのレコード削除ができ...
-
レコードのリセットは可能ですか?
-
データの二重表示の原因
-
SQLデータ修正時に『このレコー...
-
SQLiteで最も古いレコードのみ...
-
昇順降順の入り混じったクエリ...
-
アクセスで変更ログを作成する
-
ACCESS2002、レコードのインポ...
-
Accessで重複したデータを一件...
-
リレーションシップについて。
-
数百万件レコードのdelete
-
SQLサーバのテーブルのデータを...
-
Access 削除クエリが重い
-
非連結サブフォームのレコード...
-
行列の変換
-
Accessレポートで表を作る
-
重複データを除いてインポート
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
Accessにインポートしたら並び...
-
データの二重表示の原因
-
Access 1レコードずつcsvで出力...
-
数百万件レコードのdelete
-
ACCESSのBookmarkプロパティの...
-
テーブルのレコード削除ができ...
-
ManagementStudioからのデータ削除
-
Access VBA Me.Requery レコー...
-
Access 削除クエリが重い
-
非連結サブフォームのレコード...
-
SQLデータ修正時に『このレコー...
-
レコードロックする方法
-
(ACCESS)並び替えをしないで...
-
Accessの固有レコード識別子の選択
-
SQLServerで同一条件レコードの...
-
Accessで重複したデータを一件...
-
Accessでの排他制御
-
Accessでレコードが更新された...
-
Access カレントレコードがあり...
おすすめ情報