หมวดหมู่: Oracle Database

Oracle: Sequence (Auto increment )Oracle: Sequence (Auto increment )

กลับมาเจอโจทย์เก่า เพื่อนเก่า Oracle 10g ที่เป็นเอกลักษณ์ของมันก็คือ auto increment หรือ pk จะเรียกว่า sequence เพราะว่า

  • สามารถที่จะสร้าง pk มากกว่าลำดับ 1 – n เพราะว่ามันจะสามารถเขียน SQL ให้สามารถเป็นลำดับอื่น ๆ ได้ เช่น order000001 – order999999 หรือ 20250805-001 – 20250805-999
  • สามารถใช้กับตารางอื่น ๆ ได้ โดยการอ้างถึงชื่อ sequence

การสร้าง sequence อย่างง่าย ๆ ทำโดยคำสั่ง SQL

CREATE SEQUENCE {sequence name}_seq START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 999999 NOCYCLE NOCACHE;

โดย

  • START WITH 1: เริ่มโดย 1
  • INCREMENT BY 1: เพิ่มครั้งละ 1
  • MINVALUE 1: ค่าขั้นต่ำคือ 1
  • MAXVALUE 999999: ใช้สำดับสุงสุดคือ 999999
  • NOCYCLE ป้องกันการวน sequence
  • NOCACHE ป้องการเตรียม sequence ไว้เพื่อ performance

ส่วนใหญ่จะใช้กันแค่

 CREATE SEQUENCE pp_prototype_seq START WITH 1 INCREMENT BY 1 NOMAXVALUE NOCACHE; 

Note: oracle กำหนดชื่อ object ไว้แค่ 31 ตัวอักษร พยามย่อให้สื่อความหมายมากที่สุด

การใช้จะใช้แทนค่าที่จะเป็น pk โดยมีรูปแบบ {sequence name}.NEXTVAL

ตัวอย่างการใช้

 INSERT INTO prototypes VALUES ;

อ่านเพิ่มเติม