結局処理は、シリアライズな?トランザクションの使い方も良く分かっていないので以下のように設計しました。

@ Z テーブルの X カラムの値が 49 のレコードが存在するかチェックする(ほとんどの場合はココではじかれる)

A Q テーブルに T レコードが存在していなければ、ユニークなユーザーIDの入った T レコードを挿入する
 INSERT INTO SELECT ?

Bその直後、その T レコードの id (オートインクリメント)の値が一番大きい T レコードを取得する

C T レコードを挿入したのが自分(ユーザーIDでチェックする)ならば、Z テーブルの X カラムの値が 49 のレコードを insert する。

これで A.php が複数同時に走ったとしても一回しか通らないはずです。

大丈夫ですよね?


PDOを利用しています。

要は他スレッド?の A.php による挿入をブロックしなければならないのですが、オーソドックスなやり方を知りたいです。。。


コードが正しいのか、タイミングをほぼ同時にできるかつ自動で微妙に時間をでずらすソフトを作成して、百本ノックならぬ100億本ノックで安全を担保しようとしています。

凄くタコなやり方ですが、これ以外に安全を担保するやり方を知らないので。。。