コメントとは異なり、PostgreSQLでは同じテーブルへの同時挿入が完全に許可されているため、ここに競合状態があります。
これを安全にするには、uniqueが必要です 制約(またはprimary key )column_nameに 。挿入が重複すると例外がスローされ、それをキャッチして更新で再試行できます。
一意の制約がない場合は、LOCK TABLE ... IN EXCLUSIVE MODEを実行する必要があります。 同時アップサートを防ぐため。または、以下で説明されている並行性に安全な方法の1つを使用します。
PostgreSQLでUPSERT(MERGE、INSERT ... ON DUPLICATE UPDATE)する方法