ถ้าคอลัมน์ในตารางของ Postgres มีชื่อyearการINSERTค้นหาควรดูอย่างไรเพื่อตั้งค่าสำหรับคอลัมน์นั้น
เช่น: INSERT INTO table (id, name, year) VALUES ( ... );ให้ข้อผิดพลาดใกล้คำปี
ถ้าคอลัมน์ในตารางของ Postgres มีชื่อyearการINSERTค้นหาควรดูอย่างไรเพื่อตั้งค่าสำหรับคอลัมน์นั้น
เช่น: INSERT INTO table (id, name, year) VALUES ( ... );ให้ข้อผิดพลาดใกล้คำปี
คำตอบ:
เพียงใส่yearเครื่องหมายคำพูดคู่เพื่อหยุดการตีความเป็นคำหลัก :
INSERT INTO table (id, name, "year") VALUES ( ... );
จากเอกสารประกอบ :
มีตัวระบุประเภทที่สอง: ตัวระบุที่คั่นหรือตัวระบุที่ยกมา เกิดขึ้นจากการใส่ลำดับของอักขระโดยพลการในเครื่องหมายคำพูดคู่ (") ตัวระบุที่คั่นจะเป็นตัวระบุเสมอไม่ใช่คำสำคัญดังนั้น" select "จึงสามารถใช้เพื่ออ้างถึงคอลัมน์หรือตารางที่ชื่อ" select " ในขณะที่การเลือกที่ไม่ได้ใส่เครื่องหมายคำพูดจะถูกนำมาใช้เป็นคำสำคัญและจะทำให้เกิดข้อผิดพลาดในการแยกวิเคราะห์เมื่อใช้ในที่ที่คาดว่าจะมีชื่อตารางหรือคอลัมน์
update "user" set "password" = 'value...';ทำงานได้ดีอย่างสมบูรณ์ ...
หากคุณไม่ได้ใส่เครื่องหมายคำพูดใน Fields / Columns ใด ๆ Postgres จะถูกลดขนาดโดยค่าเริ่มต้น และ Postgres จะข้ามการตรวจสอบคำหลักเมื่อพูดถึงชื่อคอลัมน์
ในกรณีของคุณฉันไม่คิดว่าจะต้องเพิ่มเครื่องหมายคำพูดเมื่อพูดถึงไฟล์columns. แต่ถ้าคุณกำลังใช้keywords(ลงทะเบียนโดย Postgres) เป็นชื่อของTable, Schema, FunctionหรือTriggerอื่น ๆ คุณต้องมีการใช้คำพูดสองอย่างใดอย่างหนึ่งหรือคุณสามารถระบุชื่อสกีมาด้วยจุดเรียงต่อกัน
สมมติว่าคำสั่งซื้อเป็นคำหลักที่ลงทะเบียนโดย Postgres และในบางสถานการณ์คุณต้องใช้คีย์เวิร์ดนี้เป็นชื่อตาราง
ในเวลานั้น Postgres จะอนุญาตให้คุณสร้างตารางด้วยkeywords. นั่นคือความสวยงามของ Postgres
หากต้องการเข้าถึงตารางคำสั่งซื้อคุณต้องใช้เครื่องหมายคำพูดคู่หรือคุณสามารถใช้ชื่อสคีมาก่อนชื่อตารางได้
เช่น
1
select * from schema_name.order;
2
select * from "order";
ในทำนองเดียวกันคุณสามารถใช้ชุดค่าผสมประเภทนี้ได้ หวังว่านี่จะช่วยคุณได้
MyTable,myTableและmytableมีเพียงเดียวกัน ด้วยเครื่องหมายคำพูดนี้ไม่สามารถพับได้ ดังนั้นไม่มากเช่นเดียวกับ"MyTable"mytable