We always find a need to use incremental sequence for our table data columns like primary key or other unique keys. Examples of such fields could be id fields like employee id or order sequences for order processing in OLTP databases.
Oracle provides very efficient non blocking way of getting and generating these new sequences with a database object called sequence.
Sequence should be created and used as follows.
Full syntax of sequence statement
Once we are done creating sequence object in database next thing is pretty straightforward.
You can use your sequence immediately in insert statement.
If you are using Oracle Forms or some other tool that generates Inserts for you and if you do not have direct control then consider writing a BEFORE INSERT Trigger that would call the sequnce.nextvalue and provide the next sequence to your insert.
Ex.
Oracle provides very efficient non blocking way of getting and generating these new sequences with a database object called sequence.
Sequence should be created and used as follows.
CREATE SEQUENCE employee_id_seq START WITH 10000 -- Start your sequence with 10000 INCREMENT BY 1 -- Sequence would be incremented by 1 when nextvalue is fetched from sequence NOCYCLE; -- Oracle sequence would not restart -- If you want sequence to start over after N then specify maxvalue N clause in the sequence
Full syntax of sequence statement
Once we are done creating sequence object in database next thing is pretty straightforward.
You can use your sequence immediately in insert statement.
INSERT INTO EMPLOYEES (EMPLOYEE_ID , FIRST_NAME,LAST_NAME ) VALUES (employee_id_seq.NEXTVAL , 'PATRICK' , 'HARRIS');
If you are using Oracle Forms or some other tool that generates Inserts for you and if you do not have direct control then consider writing a BEFORE INSERT Trigger that would call the sequnce.nextvalue and provide the next sequence to your insert.
Ex.
CREATE OR REPLACE TRIGGER employees_pre_ins BEFORE INSERT ON employees FOR EACH ROW begin SELECT employee_id_seq.NEXTVAL INTO :new.employee_id FROM dual; END; /
Comments
Post a Comment
Please leave your relevant comments and questions only.