Bertentangan dengan komentar, penyisipan bersamaan pada tabel yang sama sepenuhnya diizinkan di PostgreSQL, jadi ada kondisi balapan di sini.
Untuk membuat ini aman, Anda harus memiliki unique batasan (atau primary key ) pada column_name . Sisipan duplikat kemudian akan memunculkan pengecualian yang dapat Anda tangkap dan coba lagi dengan pembaruan.
Jika Anda tidak memiliki batasan unik, maka Anda harus LOCK TABLE ... IN EXCLUSIVE MODE untuk mencegah upser bersamaan. Atau gunakan salah satu metode aman-konkurensi yang dijelaskan di:
Bagaimana cara UPSERT (MERGE, INSERT ... ON DUPLICATE UPDATE) di PostgreSQL?