質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

2348閲覧

同じレコードの同時更新

panjaA

総合スコア67

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2017/11/12 14:21

編集2017/11/13 01:05

例えば、
1,山田太郎,21(番号,名前,年齢)のレコードを

Aさんが年齢を22歳へ変更する処理と
Bさんが年齢を25歳へ変更する処理が同時(Aがわずかに先に)に実行された場合

最終的に、レコードが
1,山田太郎,25となると思うのですが、
この時、Aさんは22歳に変更したものだと思ってしまうと思うのですが
これを回避する方法はあるのでしょうか。

根本的に考えが間違っている可能性もありますので、ご指摘などありましたらお願いたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Bさんの更新が、Aさんのトランザクション中という前提なら通常は排他を使います。
Aさんは排他をかけて、Bさんの更新ができないようにします。
Bさんは排他中であれば更新を中止する。
というのが通常の処理になると思います。
トランザクション外ということになると、難しいですね。

投稿2017/11/13 00:50

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

panjaA

2017/11/13 01:07

排他中であれば、更新を中止する処理を入れることで解決できそうです、 ありがとうございます。
guest

0

Aの表示が行われた時点では、DBの内容は21歳なので、合ってます。

Aの処理が年齢の21歳への更新以外もあるのなら、それまで含めて1つのトランザクションにすれば、その処理が完結するまでBの更新が待たされて、Aの処理が完結後にBの更新が行われますので、Aの処理がおかしくなることはありません。

投稿2017/11/12 15:20

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

panjaA

2017/11/13 01:07

回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問