あるテーブル(Aテーブル)に対してレコードを追加するロジックがあります。(Insert処理)
これはあるユーザIDに紐づいてInsert処理で(ユーザログみたいなものです)、
一回Insert処理をしたあとに、30分以上経過しないと同じユーザに紐づくレコードに対して、
2レコード目が登録できない仕様になっております。(1レコード登録するときに必ず現在時刻をいれている)
この仕様のもとで、
二つの端末から同時にボタンを押して(スマホ、PC)レコードがInsertされてしまう場合が生じます。
ロジックでは、いったんユーザのレコードをselectして前回のレコードから30分以上経過していない場合は、
Insertをおこなわない制御をいれておりますが、同時にボタンを押した場合は、
どちらか先にレコードができるよりも前にselect処理が同時におこってしまい、
2レコード分登録されてしまうようです。
この場合はテーブルロックをかければ最初にボタンを押した端末の方がInsert処理を終えるまでは、
次にボタンを押した端末がselectをできないという認識でよろしいでしょうか。
拙い説明ではありますが、ご教授よろしくお願いいたします。
またこの現象で他によい方法があるのであれば併せて教えていただきたく思います。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/11 13:32 編集