0

テーブル A のすべてのレコードに対してコードを生成する必要があります。コードは、テーブルに存在する行数に基づいて生成されます。

したがって、テーブル A に 5 つのレコードがある場合、コードは C006 のようになります。6 つのレコードがある場合、コードは C007 などになります。

リクエストが2人以上のユーザーによって同時に行われた場合、生成されたコードは同じであることを除いて、問題なくコードを生成しています。トランザクションの開始時に5行あるため、両方のプロセスがC006を生成します. 一意のインデックスを作成することでこれを解決しました。その場合、一方がレコードを保存し、もう一方のユーザーはコードが一意ではないというエラーを受け取ります。

さて、私の懸念は、100 人以上のユーザーが同じリクエストを行うとどうなるかということです。コードが一意になり、レコードが保存されるまで、ユーザーは要求を出し続ける必要がありますか? それが発生した場合、どのようにしてそれを回避し、すべてのリクエストに対して一意の順次コードが生成されて保存されるようにすることができますか?

ところで、私は Yii を使用していますが、Yii はデフォルトのテーブル エイリアスとして t を使用し、テーブルをロックしようとすると一意のエイリアスを指定する必要があるため、明らかにテーブル ロックは不可能です。

4

0 に答える 0