[PHP-users 12106] Re: ページをまたいで、DB のデータをロックする方法について
Kazunori Ito
php-users@php.gr.jp
Mon, 9 Dec 2002 16:41:43 +0900
伊藤です。
重松さん、早速のお返事ありがとうございます。
> 商品の情報のアップデートにいく時に、WHERE 以下に
> 自分の知っている情報を列挙します。
>
> そうすれば、自分以外の他人が編集した後にアップデートしようとしても、
> できませんから、一応排他処理もどきにはなりますね。
> そして、テーブルの定義を変更しなくてもよいというメリットもあるかと。
>
> 項目が多い場合には、sequence でも、持たせておいて、
> アップデートするときにサイクリックにインクリメントすれば、
> すべてのオリジナルのデータ内容を保持しなくてもいいかと思います。
なるほど。こういう方法は思いつきませんでした。ありがとうございます。
1つ確認したいのですが、この方法だと
(1)1人目のユーザがアップデートしようとする
→シーケンスの値をインクリメント
(2)1人目のユーザが編集中・・・
(2)'2人目のユーザがアップデートしようとする
→シーケンスの値をインクリメント
(3)1人目のユーザがSQL発行ページへ
→シーケンスの値が異なるので、アップデート失敗
(4)2人目のユーザがSQL発行ページへ
→シーケンスの値が一致するのでアップデート成功
ということで、後からアップデートしようとしたユーザが
優先されるということですよね?