ฟีเจอร์ PostgreSQL ที่ไม่ค่อยมีคนรู้จัก
(hakibenita.com)-
วิธีรู้จำนวนแถวที่ถูกแก้ไข/เพิ่มเมื่อใช้ Insert on Conflict (Upsert):
xmax -
การกำหนดสิทธิ์ให้กับคอลัมน์เฉพาะ
-
การจับคู่หลายแพตเทิร์น:
SIMILAR TOหรือ regex~ -
ดูค่าซีเควนซ์ปัจจุบันโดยไม่เพิ่มค่า:
pg_sequence_last_value() -
หากต้องการใช้ SQL หลายบรรทัดร่วมกับ
\\COPY: ใช้TEMPORARY VIEWหรือใช้COPYกับ\\g -
ป้องกันการกำหนดค่าให้คีย์ที่สร้างอัตโนมัติ: ระบุ
GENERATED ALWAYSตอนสร้างตาราง (แทนGENERATED BY DEFAULT) -
การสร้างตาราง Pivot: ใช้
pandas.pivot_table,\\crosstabviewหรือส่วนขยายtablefunc -
Dollar Quoting
→ อักขระทั้งหมดระหว่าง $$ กับ $$ จะถูกมองเป็นสตริง
→ สามารถใช้แท็กด้านในได้ เช่น $JSON$ / $function$
→ หากเติม ::jsonb ต่อท้าย จะสร้างอ็อบเจ็กต์ jsonb ได้อย่างรวดเร็ว
- การใส่คอมเมนต์ให้กับอ็อบเจ็กต์ใน DB:
COMMENT ON TABLE/COLUMNและยังใช้ Dollar Quoting เพื่อเพิ่มคำอธิบายสตริงยาว ๆ ได้
→ เขียน: COMMENT ON TABLE sale IS 'Sales made in the system';
→ ดู: \\d+ sale
- บันทึก History แยกตามแต่ละ DB
→ \\set HISTFILE ~/.psql_history- :DBNAME
-
ทำให้การเติมคำอัตโนมัติเป็นตัวพิมพ์ใหญ่:
\\set COMP_KEYWORD_CASE upper -
สั่งหน่วงเวลา:
pg_sleep(วินาที),pg_sleep_for('4 minutes 14 seconds') -
ดึงแถวแรก/แถวสุดท้ายของแต่ละกลุ่มโดยไม่ต้องใช้ซับคิวรี:
DISTINCT ON (คอลัมน์กลุ่ม) -
สร้าง UUID โดยไม่ต้องใช้ส่วนขยาย
uuid-ossp:gen_random_uuid()สร้าง version 4 UUID -
สร้างข้อมูลสุ่มที่ทำซ้ำได้: ใช้
setseed()เพื่อให้ seed เหมือนกัน -
เพิ่มเงื่อนไขโดยยังไม่ตรวจสอบข้อมูลเดิมทันที: ตอน
ALTERให้เพิ่มเฉพาะเงื่อนไขก่อนด้วยNOT VALIDแล้วค่อยตรวจสอบข้อมูลเดิมแยกต่างหากด้วยALTER VALIDATE -
ใช้งานฟีเจอร์คล้าย Synonym ของ Oracle: เปลี่ยน
search_path(มีประโยชน์สำหรับ Zero Downtime Migration) -
ค้นหา Range ที่ทับซ้อนกัน: ตัวดำเนินการ
OVERLAPS
4 ความคิดเห็น
ใน GeekNews มีแต่ข่าว postgres ขึ้นมาเยอะเกินไปรึเปล่าครับ! (ล้อเล่นนะครับ.)
ผลิตภัณฑ์ของพวกเราก็ใช้ pg เป็นหลักเหมือนกัน จึงมีแต่ต้องขอบคุณครับ. :)
ช่วงนี้ postgres กำลังมาแรงไงล่ะ..!?
postgres ดีที่สุด
เห็นด้วยครับ