พอดีนั่งอ่านหนังสือไปเรื่อย ๆ
ก็เจอคำถามใน facebook เรื่องของการ กำหนด Primary key ใน PostgreSQL
ซึ่งมีทั้งการใช้ Serial, Primary key และ Constraint
จึงลองไปดูการทำงานของ Serial หน่อยว่าเป็นอย่างไร ?

ปกติแล้วนั้น serial ใน PostgreSQL มันคือ

auto increment ใน MySQL/SQLite นั่นเอง
มักจะใช้งานแบบนี้

การทำงานภายในจะเป็นดังนี้

Data type ที่ PostgreSQL มีให้เลือกคือ

  • SMALLSERIAL ค่าระหว่าง 1-32,767
  • SERIAL ค่าระหว่าง 1-2,147,483,647
  • BIGSERIAL ค่าระหว่าง 1-9,223,372,036,854,775,807

โดยที่การทำงานของ Serial เป็นดังนี้
ค่าของ sequence number จะเริ่มที่ 1 และเพิ่มครั้งละ 1
Constraint ที่มาพร้อมคือ NOT NULL
ส่วน Primary หรือ Unique key ไม่จำเป็นต้องใส่
มันขึ้นอยู่ที่ความต้องการของเราเอง

ถ้าเป็น Primary Key ง่าย ๆ ก็ใช้งานแบบนี้

แต่ถ้าเป็น composite key ก็ใช้งาน constraint จะเหมาะสมกว่า

ลองใช้งานกันดูครับ

Reference Websites

PostgreSQL Documentation :: Numeric Type