例えば、
IDは主キーINTのオートインクリメント
VALUEはINTだとして
|ID|VALUE|
|1|1|
UPDATE dtb SET value = value + 1 WHERE id=1;
というVALUEをカウントアップするSQLを走らせると
AさんBさんCさん3人で同時にカウントアップしたとしても
その人数分ちゃんと+3カウントアップされていると思います
結果
|ID|VALUE|
|1|4|
しかし
Aさんは13のうちどの数値(タイミング)だったのか3のうちどの数値(タイミング)だったのか
Bさんは1
Cさんは1~3のうちどの数値(タイミング)だったのか
という情報が知りたい場合はどうすればいいのでしょうか??
つまりそれぞれの人が「アップデートした時点」のデータをセレクトしたいです。
SELECTしてからUPDATEすると、UPDATEされる前のデータを3人が呼び出してしまう可能性があり
UPDATEしてからSELECTすると、UPDATEされた後のデータを3人が呼び出してしまう可能性があります
これはやはりテーブルロック(MyISAMの場合)みたいな仰仰しい排他ロックをかけないと実現できないものなのでしょうか
なお、オートインクリメントは使いません
お忙しいところ恐縮ですが分かる方お教えくださいませ
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/18 05:34