मैं Sybase के कुछ संस्करण से PostgreSQL के कुछ कोड पोर्ट कर रहा हूं। यह एक सी एप्लिकेशन है जो सिबेस क्लाइंट लाइब्रेरी का उपयोग करता है। मेरे दृष्टिकोण एक अनुवाद परत है कि करने के लिए कॉल तब्दील लिखना है dbsqlexec()
करने के लिए PQexec()
(उदाहरण के लिए)। वह हिस्सा ज्यादातर काम कर रहा है।
ऐसा प्रतीत होता है कि Sybase डेटाबेस को केस संवेदी तरीके से (डेटाबेस ऑब्जेक्ट नामों के संबंध में) सेट किया गया है। उदाहरण के लिए, एक WIDGET
टेबल और एक widget
टेबल दोनों है । ऐसा लगता है कि इस एप्लिकेशन में कन्वेंशन यह है कि ऑल-अपरकेस नाम वास्तविक डेटा तालिकाओं को इंगित करते हैं, जबकि लोअरकेस नामों को कुछ प्रसंस्करण चलाते समय अस्थायी तालिकाओं के रूप में उपयोग किया जाता है।
४.१ लेक्सिकल स्ट्रक्चर के अनुसार , " मुख्य शब्द और अयोग्य पहचानकर्ता असंवेदनशील होते हैं। " मुझे पता है कि मैं निचले तह में स्वचालित तह को निष्क्रिय करने के लिए पहचानकर्ताओं को डबल-कोट कर सकता हूं, लेकिन मैं यह नहीं चाहता कि लाइनों के ज़िप के माध्यम से मैन्युअल रूप से किया जाए। इस डेटाबेस का उपयोग करने वाला कोड।
क्या डेटाबेस ऑब्जेक्ट पहचानकर्ताओं के लिए इस स्वचालित मामले को तह करने के लिए PostgreSQL को स्थापित करने का एक तरीका है?
मेरा विकल्प कुछ कोड लिखना होगा जो प्रत्येक एसक्यूएल स्टेटमेंट की जांच करता है और प्रत्येक पहचानकर्ता के चारों ओर दोहरे उद्धरण रखता है (यह एक कीवर्ड नहीं है)।
select * from TaBlEnAmE
उसी तालिका को select * from tablename
याselect * from TABLENAME
create table "tableName" (id integer primary key);
, और फिर create table "tablename" (id integer primary key);
यह क्वेरी select * from TaBlEnAmE;
"टैबलेन" से चुनेंगी , तो "टेबलनेम" से नहीं। "अधूरे नाम हमेशा लोअरकेस में बदल जाते हैं" ।