2013-01-31 9 views
8

क्या पोस्टग्रेज़ में रिकॉर्ड की पंक्ति प्राप्त करने का कोई तरीका है ??पोस्टग्रेस में ROWID बराबर 9.2

ओरेकल में मैं

SELECT MAX(BILLS.ROWID) FROM BILLS 
+3

क्षमा करें, लेकिन ऑरैकल ROWID आपको पंक्ति संख्या नहीं देता है। – gustavodidomenico

+0

इस 'ROWID' का उद्देश्य क्या होगा? –

+0

मुझे एक तालिका में नवीनतम पंक्ति (अंतिम रिकॉर्ड) प्राप्त करने की आवश्यकता है। इसके लिए मैं उप क्वेरी का उपयोग कर रहा हूं जैसे बिल * बिलों से चुनें = (बिलों से चुनें MAX (BILLS.ROWID)) – jobi88

उत्तर

8

हाँ, वहाँ ctid है स्तंभ जो rowid के लिए बराबर है की तरह उपयोग कर सकते हैं। लेकिन आपके लिए बेकार है। रोविद और सीटीडी भौतिक पंक्ति/ट्यूपल पहचानकर्ता => पुनर्निर्माण/वैक्यूम के बाद बदल सकते हैं।

http://www.postgresql.org/docs/8.3/static/ddl-system-columns.html

+11

ROWID निश्चित रूप से बेकार नहीं है। चूंकि यह पंक्ति के स्थान का भौतिक पहचानकर्ता है, यह उस पंक्ति की सबसे तेज़ संभव पहुंच है (पीके लुकअप से तेज़)। ROWIDs को डंप करके अपडेट बैकअप के रूप में उपयोग करके कुछ बैच ऑपरेशंस को महत्वपूर्ण रूप से बढ़ाया जा सकता है। इससे भी अधिक उपयोगी रूप से, ROWID को अन्यथा समान पंक्तियों में से चुनने के लिए डी-डुप्ली डिलीट्स में उपयोग किया जा सकता है, उदाहरण के लिए: कुछ समय से हटाएं जहां पंक्ति में नहीं है (कुछ मिनट, कॉलम, जो, होना चाहिए, अनन्य समूह से चुनिंदा न्यूनतम (पंक्तिबद्ध)); वह ROWID और CTID समय के साथ उत्परिवर्तनीय है एक वैध सावधानी है लेकिन उन्हें "बेकार" नहीं बनाता है। –

+0

मैं हर समय ROWID का उपयोग करता हूं लेकिन केवल एक लेनदेन के संदर्भ में। –

+4

@ नोहाइटर: निष्पक्ष होने के लिए: iddqd ने कहा "बेकार _for you_" (ओपी को संबोधित करते हुए) और मुझे लगता है कि वह इस तथ्य का जिक्र कर रहा था कि jobi88 मानता है कि पंक्तिबद्ध पंक्तियों के किसी प्रकार के आदेश को परिभाषित करता है। "नवीनतम पंक्ति" खोजने के लिए पंक्तिबद्ध निश्चित रूप से "बेकार" है –

0

अपनी तालिका में किसी भी अद्वितीय स्तंभ जोड़ें (नाम शायद rowid)। और अद्यतन ट्रिगर से पहले इसे बदलकर इसे रोकने से रोकें, अगर कोई अपडेट करने का प्रयास करेगा तो अपवाद उठाएगा। आप इस कॉलम को अनुक्रम के साथ पॉप कर सकते हैं क्योंकि @ जॉन मड ने उल्लेख किया है।

संबंधित मुद्दे