請求用の SaaS ペット プロジェクトがあります。その中で、クライアントがそれぞれチケット番号 1001 から始まるようにします。明らかに、Postgres で単純な自動フィールドを使用して値に 1000 を追加することはできません。これは、すべてのクライアントが同じデータベースと同じtickets
テーブルを共有するためです。整数型の列とクエリ (疑似 SQL)SELECT LATEST number FROM tickets WHERE client_id = [current client ID]
を使用して最新の番号+ 1
を取得し、その番号を使用して次のnumber
. 問題は、並行性の場合、このように 2 つのチケットが同じ番号で終了する可能性が高いことです。Django内または生のSQLでこれを実行できるようにするために必要な数(Bashまたはその他の種類のものを使用する場合と比較して)。
私の例を強制的に機能させる方法を探しているわけではありません。クライアントごとにチケット番号を個別にインクリメントする必要があるという問題の解決策を探しています。