![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
ODBC-JDBCブリッジドライバを使用してJAVA⇒AccessMDBにアクセスしています。
基本的な質問で申し訳ございません。
○テーブルの構成
テーブル・・・登録数テーブル
カラム・・・登録数
(1レコード1カラムのみのテーブルで登録数を管理するカウントマスタみたいなもの)
○JAVAアプリケーション
Connection 開始
UPDATE 登録数テーブル SET 登録数 = 登録数 + 1
SELECT 登録数 FROM 登録数テーブル ⇒登録数を標準出力
COMMIT
Connection 終了
○質問
上記アプリケーションをマルチ(多重)で動かした場合でも
登録数は1ずつカウントアップしますでしょうか?
言い方を変えますと必ず最初にUPDATEしたトランザクションが
コミットするまで他のトランザクションはUPDATEできないと思って
よろしいでしょうか?
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ORACLEのシーケンスなどのようにトランザクションに左右されず必ずアトミックにインクリメントされるようなDBオブジェクトでない限り、値は重複しますよ。
登録数:0の状態で、Aセッション、Bセッションがほぼ同時に動いたとします。
AセッションのUPDATE→1にインクリメント
BセッションのUPDATE→1にインクリメント
AセッションCOMMIT
BセッションCOMMIT(AのCOMMITを待ってから)
最終的な登録数:1
と言う事で要件を満たす事はできません。
setTransactionIsolationの分離レベルを何で定義するかにもよりますが、そもそもAccess
の mdb では4モードすべてをサポートしていないだろうし、仮に一番シビアなSERIALIZABLEが指定できたとしても同時アクセスが繁多であれば、あっと言う間にデッドロックの嵐で動かなくなる事、必至だと思います。
(この辺は詳しくないので、このカテの識者のご意見を伺いたいところです)
本題から外れますが、削除された質問について言えば、AccessにはFOR UPDATEの類のロックを制御すつ句はありません。
また、ロックの単位はページレベルロックですので、ORACLEのように行をターゲットしてロックする事もできません。
さらに本題とは外れますが、Accessのmdbは、このような複数セッションからの同時更新には向きません。
(よく破損します)
せめて、MySQL か PostgreSQL にした方がいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Visual Basic(VBA) VBA 登録ボタンを省略してエンターキーで作業 4 2022/07/09 22:29
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- LINE LINEのリンクとQRコード。 1 2022/11/18 19:41
- ポイントサービス・マイル 楽天カードで番号の登録と抹消の繰り返しは? 1 2022/09/10 17:39
- Access(アクセス) テキストボックスの値をテーブルに入力したい 2 2022/06/28 12:08
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaでのアクセスカウント
-
コネクション・セッション・ト...
-
セッションIDを取得したい
-
CD-Rのセッションクローズを調...
-
セッションハイジャックの対策...
-
フォームデータをlocation.repl...
-
ルータのPPPのランプの色が変
-
コンピュータへの接続数が最大...
-
Firefoxの「セッション復元」メ...
-
Accessの画面更新を一時的に停...
-
画面遷移が不正ですと表示されます
-
ASPで画面間のパラメタ受け渡し
-
submitボタンにvalue属性の値で...
-
リンクでPOSTデータを送信する...
-
HTMLのKEYとVALUE...
-
同じソリューション内の別のプ...
-
getParameterで値が取得できず...
-
HTMLボタンの文字色を変え...
-
DataGridViewのチェックボック...
-
PageLoadの後にJavascript実行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コネクション・セッション・ト...
-
コンピュータへの接続数が最大...
-
会社への勤怠届出にGoogleフォ...
-
DVD-Rの「セッションを閉じる」...
-
ブラウザの×(閉じる)ボタンの...
-
ブラウザを閉じずにセッション...
-
セッションIDを取得したい
-
DVDの中身が表示されません。
-
WCFのwsDualHttpBindingについて
-
ASP.NET 電卓計算
-
ルータのPPPのランプの色が変
-
CD-Rに追記したときに消え去っ...
-
自分のPCへアクセスしているコ...
-
JSPでポップアップウィンド...
-
遠隔操作されてる?
-
ショッピングカートのプログラ...
-
別ブラウザにセッションを渡す...
-
セッション変数の破棄と再設定
-
javaでのアクセスカウント
-
WebBrowserを初期化
おすすめ情報