วิธีการตั้งค่าคีย์หลักเพิ่มค่า PostgreSQL อัตโนมัติ

How Setup Postgresql Auto Increment Primary Key



อาจมีบางครั้งที่คุณสร้างและรักษาตารางใน PostgreSQL เมื่อคุณต้องการค่าเฉพาะสำหรับคอลัมน์ที่สร้างขึ้นตามคำขอ นี้จะเป็นจริงโดยเฉพาะอย่างยิ่งสำหรับคอลัมน์ id ที่ทำหน้าที่เป็นคีย์หลักของตาราง โชคดีที่ประเภทเทียมแบบซีเรียลช่วยให้สร้างชุดจำนวนเต็มแบบเพิ่มค่าอัตโนมัติได้สะดวก ชุดคือประเภทของวัตถุฐานข้อมูลใน PostgreSQL ที่สร้างชุดของดัชนีหรือจำนวนเต็ม ลำดับ PostgreSQL สร้างสตริงของจำนวนเต็มที่แตกต่างกัน ทำให้เหมาะที่จะใช้เป็นคีย์หลักเมื่อสร้างตารางใหม่ เราจะแสดงให้คุณเห็นถึงการเพิ่มค่าอัตโนมัติใน PostgreSQL และเราจะใช้ SERIAL pseudo-type ตลอดคู่มือนี้

ไวยากรณ์:

ไวยากรณ์ทั่วไปสำหรับการสร้างคีย์หลักการเพิ่มอัตโนมัติมีดังนี้:







>>สร้างตาราง table_name( NSซีเรียล);

ให้เราดูที่การประกาศ CREATE TABLE โดยละเอียดเพิ่มเติม:



  • PostgreSQL สร้างเอนทิตีชุดก่อน จะสร้างค่าถัดไปในชุดข้อมูลและตั้งค่าเป็นค่าอ้างอิงเริ่มต้นของฟิลด์
  • PostgreSQL ใช้ข้อจำกัดโดยนัย NOT NULL กับฟิลด์ id เนื่องจากชุดข้อมูลจะสร้างค่าตัวเลข
  • ฟิลด์ id จะถูกจัดสรรให้เป็นเจ้าของซีรีส์ หากละเว้นฟิลด์รหัสหรือตารางเอง ลำดับจะถูกยกเลิก

เพื่อให้ได้แนวคิดของการเพิ่มขึ้นอัตโนมัติ โปรดตรวจสอบให้แน่ใจว่า PostgreSQL ได้รับการติดตั้งและกำหนดค่าในระบบของคุณก่อนที่จะดำเนินการกับภาพประกอบในคู่มือนี้ เปิดเชลล์บรรทัดคำสั่ง PostgreSQL จากเดสก์ท็อป เพิ่มชื่อเซิร์ฟเวอร์ของคุณที่คุณต้องการใช้งาน มิฉะนั้น ปล่อยให้เป็นค่าเริ่มต้น เขียนชื่อฐานข้อมูลที่อยู่ในเซิร์ฟเวอร์ของคุณที่คุณต้องการใช้งาน หากคุณไม่ต้องการเปลี่ยน ให้ปล่อยไว้เป็นค่าเริ่มต้น เราจะใช้ฐานข้อมูลทดสอบ นั่นคือเหตุผลที่เราเพิ่มเข้าไป คุณยังสามารถทำงานบนพอร์ตเริ่มต้น 5432 ได้ แต่คุณยังสามารถเปลี่ยนแปลงได้ ในท้ายที่สุด คุณต้องระบุชื่อผู้ใช้สำหรับฐานข้อมูลที่คุณเลือก ปล่อยให้เป็นค่าเริ่มต้นหากคุณไม่ต้องการเปลี่ยน พิมพ์รหัสผ่านของคุณสำหรับชื่อผู้ใช้ที่เลือกแล้วกด Enter จากแป้นพิมพ์เพื่อเริ่มใช้ command shell







การใช้คำหลักแบบซีเรียลเป็นประเภทข้อมูล:

เมื่อเราสร้างตาราง เรามักจะไม่เพิ่มคำหลัก SERIAL ในฟิลด์คอลัมน์หลัก ซึ่งหมายความว่าเราต้องเพิ่มค่าลงในคอลัมน์คีย์หลักในขณะที่ใช้คำสั่ง INSERT แต่เมื่อเราใช้คำหลัก SERIAL ในแบบสอบถามของเราในขณะที่สร้างตาราง เราไม่ควรเพิ่มค่าคอลัมน์หลักในขณะที่แทรกค่า ลองมาดูที่มัน

ตัวอย่าง 01:

สร้างตารางทดสอบด้วย id และชื่อสองคอลัมน์ id คอลัมน์ถูกกำหนดให้เป็นคอลัมน์คีย์หลักเนื่องจากประเภทข้อมูลของมันคือ SERIAL ในทางกลับกัน ชื่อคอลัมน์ถูกกำหนดเป็นชนิดข้อมูล TEXT NOT NULL ลองใช้คำสั่งด้านล่างเพื่อสร้างตารางและตารางจะถูกสร้างขึ้นอย่างมีประสิทธิภาพดังที่เห็นในภาพด้านล่าง



>>สร้างการทดสอบตาราง( NSคีย์หลักแบบซีเรียล ชื่อ TEXT NOT NULL);

มาใส่ค่าบางอย่างลงในชื่อคอลัมน์ของ TEST ตารางที่สร้างขึ้นใหม่ เราจะไม่เพิ่มค่าใด ๆ ให้กับรหัสคอลัมน์ คุณจะเห็นว่าค่าต่างๆ ถูกแทรกเรียบร้อยแล้วโดยใช้คำสั่ง INSERT ตามที่ระบุด้านล่าง

>>INSERT INTO ทดสอบ(ชื่อ)ค่านิยม('อัคซา'),('ริมชา'),('ข่าน');

ถึงเวลาตรวจสอบบันทึกของตาราง 'ทดสอบ' ลองใช้คำสั่ง SELECT ด้านล่างใน command shell

>>เลือก*จากการทดสอบ;

จากผลลัพธ์ด้านล่าง คุณสามารถสังเกตได้ว่า id คอลัมน์ได้รับค่าบางอย่างในนั้นโดยอัตโนมัติ แม้ว่าเราจะยังไม่ได้เพิ่มค่าใดๆ จากคำสั่ง INSERT เนื่องจากประเภทข้อมูล SERIAL ที่เราได้ระบุไว้สำหรับ id คอลัมน์ นี่คือลักษณะการทำงานของประเภทข้อมูล SERIAL ด้วยตัวเอง

ตัวอย่าง 02:

อีกวิธีในการตรวจสอบค่าของคอลัมน์ประเภทข้อมูล SERIAL คือการใช้คีย์เวิร์ด RETURNING ในคำสั่ง INSERT การประกาศด้านล่างสร้างบรรทัดใหม่ในตารางทดสอบและให้ค่าสำหรับฟิลด์ id:

>>INSERT INTO ทดสอบ(ชื่อ)ค่านิยม('ฮัสซัม')การกลับมาNS;

โดยการตรวจสอบระเบียนของตาราง Test โดยใช้แบบสอบถาม SELECT เราได้ผลลัพธ์ด้านล่างตามที่แสดงในภาพ เพิ่มระเบียนที่ห้าลงในตารางอย่างมีประสิทธิภาพแล้ว

>>เลือก*จากการทดสอบ;

ตัวอย่าง 03:

เวอร์ชันทางเลือกของข้อความค้นหาการแทรกด้านบนนี้ใช้คีย์เวิร์ด DEFAULT เราจะใช้ชื่อคอลัมน์ id ในคำสั่ง INSERT และในส่วน VALUES เราจะให้คีย์เวิร์ด DEFAULT เป็นค่าของมัน แบบสอบถามด้านล่างจะทำงานเหมือนกันเมื่อดำเนินการ

>>INSERT INTO ทดสอบ(NS, ชื่อ)ค่านิยม(ค่าเริ่มต้น 'การแข่งขัน');

ลองตรวจสอบตารางอีกครั้งโดยใช้แบบสอบถาม SELECT ดังนี้:

>>เลือก*จากการทดสอบ;

คุณสามารถดูได้จากผลลัพธ์ด้านล่าง ค่าใหม่ได้ถูกเพิ่มเข้าไปในขณะที่ id คอลัมน์เพิ่มขึ้นตามค่าเริ่มต้น

ตัวอย่าง 04:

หมายเลขลำดับของฟิลด์คอลัมน์ SERIAL สามารถพบได้ในตารางใน PostgreSQL ใช้เมธอด pg_get_serial_sequence() เพื่อทำสิ่งนี้ให้สำเร็จ เราต้องใช้ฟังก์ชัน currval() ร่วมกับเมธอด pg_get_serial_sequence() ในแบบสอบถามนี้ เราจะระบุชื่อตารางและชื่อคอลัมน์ SERIAL ในพารามิเตอร์ของฟังก์ชัน pg_get_serial_sequence() อย่างที่คุณเห็น เราได้ระบุตารางการทดสอบและรหัสคอลัมน์ วิธีนี้ใช้ในตัวอย่างแบบสอบถามด้านล่าง:

>>เลือกเส้นโค้ง(pg_get_serial_sequence('ทดสอบ', 'NS'));

เป็นที่น่าสังเกตว่าฟังก์ชัน currval() ของเราช่วยให้เราแยกค่าล่าสุดของลำดับได้ ซึ่งก็คือ 5 ภาพด้านล่างคือภาพประกอบของประสิทธิภาพการทำงาน

บทสรุป:

ในบทช่วยสอนนี้ เราได้สาธิตวิธีใช้ SERIAL pseudo-type เพื่อเพิ่มค่าอัตโนมัติใน PostgreSQL การใช้ชุดข้อมูลใน PostgreSQL ทำให้ง่ายต่อการสร้างชุดตัวเลขที่เพิ่มค่าอัตโนมัติ หวังว่าคุณจะสามารถใช้ฟิลด์ SERIAL กับคำอธิบายตารางได้โดยใช้ภาพประกอบของเราเป็นข้อมูลอ้างอิง