
javaで登録処理を行ないますが、以下のようなことは
可能なのでしょうか?
環境
DB postgress
java1.4.2
やりたいこと
TBL-A のキーは1から連番の項目Aです。
最大のAを取得し+1した値で登録します。
2人以上が同時に実行した場合二重登録違反が発生する
可能性がありますので二重登録違反が発生すれば再度
最大のAを取得して登録をやり直したい。
この処理がその他のことで長い時間が掛かりますので
排他をかけたくないと思っています。
ご存知であればご教授お願い致します。
(出来るか出来ないかだけでも教えてください)
No.1ベストアンサー
- 回答日時:
>この処理がその他のことで長い時間が掛かりますので
>排他をかけたくないと思っています
最大値を拾って、+1して、insertするのですよね?
それを排他制御なしで行えば、データとインデクス間などでDBに不整合が起こったりしますよ?
一時的に占有してしまうなら、まだ分かりますが。
ロールバック等が発生して、途中の番号に抜けが生じることは許されないのでしょうか?もし途中に欠番が生じてもいいので、順次、ユニークな番号でいいなら、PostgreSQLには、連番型(serialまたはsequence)があります。
http://www.postgresql.jp/document/pg823doc/html/ …
参考URL:http://www.postgresql.jp/document/pg823doc/html/ …
No.2
- 回答日時:
この手の処理は普通は seqence を使うと思います。
sequence はロックしなくても同じ値は絶対に取得されることが無いことが保証されています。ロールバックが発生した場合に、値が欠番になってしまうことがあるのですが、これはしかたがないでしょう。お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10がインストールできま...
-
エクセルで縦のカラムデータを...
-
Ophcrackについて
-
postgresqlのtableのカラムの型...
-
php、postgresqlを使ってwebア...
-
三段論法を真理値表で証明する
-
sqlの中で、 例えば条件句で AN...
-
tesuto 01
-
python3.12のインストール方法
-
Pythonで2つのデータ(キー無し...
-
数値が定期的にあらわれる文字...
-
終端クォート ' が必要です と...
-
PostgressからMySQL(MariaDB)...
-
【PostgreSQL】行の値の並びを...
-
列が存在しないと言われる
-
PostgreSQL14.6のSSL対応について
-
ポストグレにあるExcelファイル...
-
PostgreSQL レコードからアイテ...
-
文字切り替えの時に 中央にでる A
-
postgreSQL カラムの全ての値を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースの復元について
-
アーカイブログ、ポイントイン...
-
長期間使っていると更新処理速...
-
レンタルサーバーのPostgreSQL...
-
ReIndex処理の頻度
-
バックアップ対象のディレクトリ
-
Windoes版のバックアップ方法
-
ディスク上のサイズの乖離が大...
-
oracle spool SJIS → UTF-8
-
Windows版 pg_dumpの結果をログ...
-
ヤフーショッピングでPayPay支...
-
PostgreSQLについて教えてくだ...
-
Query OK, 0 rows affected
-
tar.gzファイルのリストアについて
-
Windows上のPostgreSQLの完全削...
-
CSVファイルをBULK INSERTでSQL...
-
リコーimagioneo630 エラーs...
-
ACCESSのフォームだけを起動す...
-
createdbでいきなりつまづいて...
-
SJISのDBは作れますか?
おすすめ情報