私は会社の受領番号を生成するために使用されるpostgresにデータベーステーブルを持っています。テーブルは、投稿の後に行が記録されたときに挿入されるreceipt_numberという名前の列を持っています。最後の領収書番号を確認し、次の領収書番号を得るために1ずつインクリメントします。問題は、2人のクライアントが同時に支払うとすると、2行が記録されますが、同じ領収書番号があります。 。postgresデータベーステーブルの重複するエントリを制御する方法
複数のクライアントが同時に支払いを行う場合にのみ、偶然にも...その原因が何であるかの任意のアイデア..事前に
おかげで
テーブルにプライマリキーがありません –
"last receipt_number"はどのようにチェックしますか?それが単純な 'max()'ならば、決して動作しません。あなたは番号の隙間に住むことができますか?次に、シーケンスを使用します。 –
私は前に使用したPKを持っていますが、突然それが連続した順序ではなく番号を飛び越し始めたので、私は別のcolumnを導入することにしました。私は、別のテーブルを持っている私は、レシートテーブルに新しいレコードを挿入する前にcurrent_receipt_numberを呼び出す1つずつインクリメントし、現在の番号に更新して次のエントリの準備を整える – user6781731