ฉันกำลังย้ายโค้ดจาก Sybase ไปยัง PostgreSQL บางเวอร์ชัน นี่เป็นแอปพลิเคชั่น C ที่ใช้ไลบรารีไคลเอ็นต์ Sybase แนวทางของฉันคือการเขียนเลเยอร์การแปลที่แปลการโทรไปdbsqlexec()
ที่PQexec()
(ตัวอย่าง) ส่วนนั้นทำงานได้เป็นส่วนใหญ่
ปรากฏว่ามีการตั้งค่าฐานข้อมูล Sybase ในลักษณะที่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (เกี่ยวกับชื่อวัตถุฐานข้อมูล) ตัวอย่างเช่นมีทั้งWIDGET
ตารางและwidget
ตาราง ดูเหมือนว่าการประชุมในแอพพลิเคชั่นนี้นั้นชื่อ all-uppercase จะระบุตารางข้อมูลจริงในขณะที่ชื่อตัวพิมพ์เล็กจะถูกใช้เป็นตารางชั่วคราวเมื่อทำการประมวลผล
ตามโครงสร้างคำศัพท์ 4.1 " คำสำคัญและตัวระบุที่ไม่มีเครื่องหมายเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่" ฉันรู้ว่าฉันสามารถอ้างตัวระบุสองครั้งเพื่อปิดการใช้งานการพับอัตโนมัติเป็นตัวพิมพ์เล็ก แต่ฉันไม่ต้องการทำด้วยตนเอง ของรหัสที่ใช้ฐานข้อมูลนี้
มีวิธีการตั้งค่า PostgreSQL เพื่อปิดใช้งานตัวพิมพ์เล็กอัตโนมัตินี้สำหรับตัวระบุวัตถุฐานข้อมูลหรือไม่?
ทางเลือกของฉันคือการเขียนโค้ดที่ตรวจสอบคำสั่ง SQL แต่ละคำสั่งและใส่เครื่องหมายอัญประกาศคู่รอบตัวระบุทุกตัว (นั่นไม่ใช่คำหลัก)
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;
จะเลือกจาก "tablename" ไม่ใช่จาก "tableName" "ชื่อ unquoted พับเสมอที่จะเป็นตัวพิมพ์เล็ก"