Gibt es eine Möglichkeit, ein Problem zu lösen, wenn Sie eine gleichzeitige Einfügung und Aktualisierung für dasselbe Feld über eine Umgebung mit mehreren Threads erhalten.Gleichzeitiges Einfügen und Aktualisieren Postgres
Beispiel
Thema 1
BEGIN
insert into users (name,age) values('spiderman',27)
COMMIT
Thema 2
BEGIN
update into users set age = 26 where name='spiderman';
COMMIT
Die meiste Zeit Update (Transaktion) ist der Einsatz nicht bewusst daher Fehler wirft und geschieht.
Was ich hier sehe, ist ein klassisches Beispiel für Rennbedingungen und eine Möglichkeit Rennbedingungen zu vermeiden, ist die Verwendung von Sperren.
Wie Sie Sperren (Datensatz) auf einen Datensatz anwenden, die noch nicht in DB vorhanden sind.
Im obigen Beispiel für eine Anweisung einfügen, so dass Update weiß, dass der Datensatz noch nicht in DB ist.
in einer Web-Umgebung, verwenden Sie https://en.wikipedia.org/wiki/Optimistic_concurrency_control (siehe @Version-Annotation in JPA) –