Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एक डेटाबेस में परमाणु तुलना और स्वैप

क्या पीके प्राथमिक कुंजी है? फिर यह कोई मुद्दा नहीं है, यदि आप पहले से ही प्राथमिक कुंजी जानते हैं तो कोई खेल नहीं है। अगर पीके है प्राथमिक कुंजी, फिर यह स्पष्ट प्रश्न पूछता है कैसे क्या आप आइटम का pk dequeue करना जानते हैं...

समस्या यह है कि यदि आप नहीं प्राथमिक कुंजी को जानें और अगले 'उपलब्ध' (यानी स्थिति =y) को हटाना चाहते हैं और इसे dequeued के रूप में चिह्नित करना चाहते हैं (इसे हटाएं या स्थिति =z सेट करें)।

ऐसा करने का उचित तरीका एकल कथन का उपयोग करना है। दुर्भाग्य से सिंटैक्स Oracle और SQL सर्वर के बीच भिन्न होता है। SQL सर्वर सिंटैक्स है:

update top (1) [<table>]
set status = z 
output DELETED.*
where  status = y;

मैं SQL के OUTPUT एक के समान उदाहरण देने के लिए Oracle के रिटर्निंग क्लॉज से पर्याप्त परिचित नहीं हूं।

अन्य SQL सर्वर समाधानों को सही होने के लिए SELECT (UPDLOCK के साथ) पर लॉक संकेतों की आवश्यकता होती है। Oracle में प्रीफ़र्ड एवेन्यू फॉर UPDATE का उपयोग करता है, लेकिन यह SQL सर्वर में काम नहीं करता है क्योंकि FOR UPDATE को SQL में कर्सर के साथ संयोजन के रूप में उपयोग किया जाना है। ।

किसी भी मामले में, मूल पोस्ट में आपका व्यवहार गलत है। एकाधिक सत्र सभी एक ही पंक्ति (पंक्तियों) का चयन कर सकते हैं और यहां तक ​​​​कि सभी इसे अपडेट कर सकते हैं, एक ही हटाए गए आइटम को एकाधिक पाठकों को वापस कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आकाशवाणी। मर्ज सबक्वेरी और मुख्य क्वेरी शर्तों को रोकना

  2. कैसे refcursor में एक बूलियन वापस करने के लिए?

  3. Oracle - sql_text को क्रिएट/अल्टर/ग्रांट स्टेटमेंट के लिए 20 वर्णों तक छोटा कर दिया गया?

  4. एंटिटी फ्रेमवर्क कोड में ओरेकल के लिए मैप गाइड प्रॉपर्टी पहले

  5. Oracle में अंतराल और द्वीप समाधान - पुनरावर्ती का उपयोग