พอดีนั่งอ่านหนังสือไปเรื่อย ๆ
ก็เจอคำถามใน facebook เรื่องของการ กำหนด Primary key ใน PostgreSQL
ซึ่งมีทั้งการใช้ Serial, Primary key และ Constraint
จึงลองไปดูการทำงานของ Serial หน่อยว่าเป็นอย่างไร ?
ปกติแล้วนั้น serial ใน PostgreSQL มันคือ
auto increment ใน MySQL/SQLite นั่นเอง
มักจะใช้งานแบบนี้
การทำงานภายในจะเป็นดังนี้
[gist id="f6e8b94312ecb8bd7ec39ed1ef72107e" file="2.txt"]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 ง่าย ๆ ก็ใช้งานแบบนี้
[gist id="f6e8b94312ecb8bd7ec39ed1ef72107e" file="3.txt"]แต่ถ้าเป็น composite key ก็ใช้งาน constraint จะเหมาะสมกว่า
[gist id="f6e8b94312ecb8bd7ec39ed1ef72107e" file="4.txt"]ลองใช้งานกันดูครับ
Reference Websites