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