私は請求書発行のためのSaaSペットプロジェクトを持っています。私はすべてのクライアントが同じデータベースを共有し、同じtickets
テーブルを共有するので、私はクライアントがチケット番号1001でそれぞれのスタートを欲しいと思います。私はPostgresで簡単な自動フィールドを使用することはできません。私は整数列型を使用し、最新の数値を取得するために擬似SQL(SELECT LATEST number FROM tickets WHERE client_id = [current client ID]
)をクエリし、その数値+ 1
を使用して次のnumber
を取得しようとしました。問題は並行性により、2つのチケットがこのように同じ番号で終わることは容易に可能であることです。私がDjango内でこれをやることができるか、あるいは生のSQLを使って(Bashや他の何かを使って)できるようにするための数です。Postgresの列を手動で順序付ける正しい方法は何ですか?
例を強制的に動作させる方法を探しているわけではありません。私はちょうど各クライアントのためにチケット番号を独立して増やすことを必要とするという問題への解決策を探しています。
可能な複製:http://stackoverflow.com/questions/6046085/postgresql-sequence-that-ensure-a-unique-id –
一意の番号を探しているので重複しません。 Mineは、別のフィールド(クライアントフィールド)に対して次の番号を順に探しています。実際には、私はオートフィールド(シリアル)を使用できないと述べています。 – orokusaki
Gotcha、私は今理解しています。うまくいけば私の答えはあなたのために働く(または、他の誰かがよりエレガントな何かを持っている)。 –