আমার কাছে কাউন্টারগুলির নিম্নলিখিত সারণি রয়েছে:
CREATE TABLE cache (
key text PRIMARY KEY,
generation int
);
আমি কাউন্টারগুলির মধ্যে একটিকে বাড়িয়ে দিতে চাই বা সংশ্লিষ্ট সারিটি উপস্থিত না থাকলে শূন্যে সেট করতে চাই। স্ট্যান্ডার্ড এসকিউএলে সম্মতিযুক্ত সমস্যাগুলি ছাড়াই এটি করার কোনও উপায় আছে কি? অপারেশন কখনও কখনও লেনদেনের অংশ, কখনও কখনও পৃথক।
যদি সম্ভব হয় তবে এসকিউএল অবশ্যই এসকিউএল, পোস্টগ্রেএসকিউএল এবং মাইএসকিউএলে অপরিবর্তিতভাবে চালাতে হবে।
একটি অনুসন্ধানে বেশ কয়েকটি ধারণা পাওয়া গেছে যা হয় সম্মতিমূলক সমস্যাগুলির সাথে ভুগছে বা একটি ডেটাবেসের সাথে নির্দিষ্ট:
INSERT
একটি নতুন সারিতে চেষ্টা করুন , এবংUPDATE
যদি কোনও ত্রুটি ছিল। দুর্ভাগ্যক্রমে,INSERT
বর্তমান লেনদেনটি বাতিল করে দেওয়ার ত্রুটি ।UPDATE
সারি, এবং কোনও সারি পরিবর্তিত না হলেINSERT
একটি নতুন সারি।মাইএসকিউএলের একটি
ON DUPLICATE KEY UPDATE
ধারা রয়েছে use
সম্পাদনা: দুর্দান্ত উত্তরগুলির জন্য ধন্যবাদ। দেখে মনে হচ্ছে পল ঠিকই আছেন এবং এটি করার কোনও একক, পোর্টেবল উপায় নেই। এটি আমার কাছে বেশ আশ্চর্যজনক, কারণ এটি খুব বেসিক অপারেশন বলে মনে হচ্ছে।