Ich habe eine Datenbanktabelle in Postgres, die verwendet wird, um Quittungsnummern für das Unternehmen zu generieren. Die Tabelle hat eine Spalte mit dem Namen receipt_number, die eingefügt wird, wenn eine Zeile nach dem Post aufgezeichnet wird Überprüfen Sie die letzte Quittungsnummer und erhöhen Sie sie um 1, um die nächste Quittungsnummer zu erhalten. Das Problem ist, dass wenn zwei Kunden gleichzeitig zahlen, zwei Zeilen aufgezeichnet werden, aber sie haben die gleiche Quittungsnummer, sonst ist alles in Ordnung .Wie doppelte Eintrag in Postgres-Datenbank-Tabelle zu steuern
Jede Idee von dem, was die Ursache dafür ist ... Wie es geschieht nur, wenn mehrere Clients Zahlungen zur gleichen Zeit machen ..
Vielen Dank im Voraus
Sie haben keinen Primärschlüssel in der Tabelle –
Wie überprüfen Sie die "letzte Belegnummer"? Wenn das ein einfaches 'max()' ist, dann wird es nie funktionieren. Kannst du mit Lücken in der Anzahl leben? Dann benutze eine Sequenz. –
Ich habe das PK, das ich vorher benutzt habe, aber plötzlich fing es an, Zahlen nicht in einer seriellen Reihenfolge zu springen und so entschied ich mich, eine separate Spalte einzuführen.Und du hast Recht, ich benutzte Max() und es gab mir das gleiche Problem. Ich habe eine separate Tabelle, die ich Current_receipt_number von denen vor dem Einfügen eines neuen Datensatzes in der Quittung Tabelle ich es erhöhen und dann auf die aktuelle Zahl für den nächsten Eintrag bereit – user6781731