Postgres में एक मूल्य वृद्धि


108

मैं पोस्ट करने के लिए थोड़ा नया हूं। मैं पोस्टग्रेज टेबल में एक क्षेत्र में एक मान (जो एक पूर्णांक है) लेना चाहता हूं और इसे एक-एक करके बढ़ाता हूं। उदाहरण के लिए यदि तालिका 'योग' में 2 कॉलम, 'नाम' और 'कुल' होते हैं, और बिल में कुल 203 थे, तो बिल के कुल 204 को स्थानांतरित करने के लिए मैं SQL कथन का क्या उपयोग करूंगा?

जवाबों:


209
UPDATE totals 
   SET total = total + 1
WHERE name = 'bill';

यदि आप यह सुनिश्चित करना चाहते हैं कि वर्तमान मूल्य वास्तव में 203 है (और इसे दोबारा नहीं बढ़ाएँ) तो आप एक और शर्त भी जोड़ सकते हैं:

UPDATE totals 
   SET total = total + 1
WHERE name = 'bill'
  AND total = 203;

1
मैं नॉन-पूर्णांक डेटाटाइप को बढ़ाने की कोशिश कर रहा था और ERROR: operator does not exist: character varying + integer LINE 2: SET total = total + 1 इस तरह पूर्णांक के रूप में मूल्य कास्टिंग द्वारा हल किया गया थाSET total = total::int + 1
स्टू-ऑ

33
@ Stew-au: varchar कॉलम में नंबर स्टोर करें । जो आपको लंबे समय में परेशानी देगा। एक पूर्णांक (या बिगिंट या जो कुछ भी उपयुक्त है) का उपयोग करें लेकिन एक वर्ण डेटाटाइप का उपयोग न करें।
a_horse_with_no_name

4
यह कथन परमाणु है या क्या मुझे पहले लिखने के लिए निराशावादी ताला की आवश्यकता होगी? (मेरा डर यह है कि कुल असाइन करने और कुल + 1 के लिए कुल लाने के बीच में कुछ लेखन तालिका में किया गया है।)
म्हो सेप

9
एक एकल विवरण हमेशा संबंधपरक डेटाबेस में परमाणु होता है। हालाँकि अपडेट चलाने से दूसरों को पढ़ने से रोका नहीं जाएगा को पुराने मूल्यों जब तक कि आपका लेनदेन प्रतिबद्ध नहीं है
a_horse_with_no_name

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.