UPSERT মানে "সন্নিবেশ করুন, বা যদি এটি ইতিমধ্যে বিদ্যমান থাকে তবে আপডেট করুন।" PostgreSQL এটি INSERT ... ON CONFLICT দিয়ে প্রয়োগ করে — একটি সারি সন্নিবেশ করুন, কিন্তু যদি এটি একটি অনন্য সীমাবদ্ধতা লঙ্ঘন করে তবে পরিবর্তে বিদ্যমান সারি আপডেট করুন (বা কিছু করবেন না)। এটি সাধারণ "সন্নিবেশ-বা-আপডেট" প্রয়োজন পরমাণুভাবে পরিচালনা করে।
সমস্যা যা UPSERT সমাধান করে
You want to insert a row, but it might already exist (by a unique key):
❌ a plain INSERT fails with a unique-violation error if it exists
❌ check-then-insert (SELECT, then INSERT or UPDATE) has a RACE CONDITION
(another transaction could insert between your check and insert)
→ ON CONFLICT does it atomically in ONE statement (no race condition)
