Tag Archive auto increment

Byphunsanit

Oracle: sequence create / drop / reindex

การสร้าง sequence ใน oracle 10g ัมนไม่ได้ง่าย ๆ แบบ drop แล้ว create แต่จะมีโครงสร้างที่ซับซ้อนขึ้นมาเล็กน้อย หรือจะให้ reindex table sequence ใหม่โดยเริ่มจากหมายเลข xxx

เราสามารถจะ query หา sequence ปัจจุบัน ได้จาก ( sequence เดียวกันสามารถใช้ได้หลายตาราง จึงควรใช้วิธีนี้มากกว่า max ของตารางใด ตารางหนึ่ง )

 SELECT sequence_name,
       last_number,
       increment_by,
       ( last_number ) AS next_value
FROM   user_sequences
WHERE  sequence_name = 'PP_PROTOTYPE_SEQ';

การลบ ( drop ) sequence

ตัวอย่างจะ drop sequence ชื่อ pp_prototype_seq

-- Drop sequence pp_prototype_seq if it exists
BEGIN EXECUTE IMMEDIATE 'DROP SEQUENCE pp_prototype_seq';

EXCEPTION WHEN OTHERS THEN IF SQLCODE != -2289 THEN -- ORA-02289: sequence does not exist
RAISE;
END IF;
END;
/

จากนั้นจึงจะ create sequence ชื่อ pp_prototype_seq ขั้นมาใหม่ หรือจะ re-index sequence ใหม่ได้ เช่น

-- Create a sequence for the auto-increment ID
CREATE SEQUENCE pp_prototype_seq 
    START WITH 24 
    INCREMENT BY 1 
    NOMAXVALUE 
    NOCACHE;

จะเริ่มนับ pp_prototype_seq โดยเริ่มจากลำดับที่ 24