Does oracle have "auto number" data type [duplicate]
I am amazed to see that oracle does not have "auto number" data type. Is there any way to use auto number data type as we have this data type in MS access?
This blog post describes an option for this functionality.
Key elements are quoted below, but the post goes into more depth.
create sequence test_seq start with 1 increment by 1 nomaxvalue;
Followed by
insert into test values(test_seq.nextval, 'voila!');
OR
create trigger test_trigger before insert on test for each row begin select test_seq.nextval into :new.id from dual; end;
In oracle you use a Sequence. You can have any number of sequences, and use any of them to assign a unique number to any field in any table or just call on one to assign a number to a variable.
SQL> CREATE SEQUENCE demo_seq INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 0 NOCACHE;
Sequence created.
SQL> select demo_seq.nextval from dual;
NEXTVAL
----------
0
SQL> select demo_seq.nextval from dual;
NEXTVAL
----------
1
SQL> select demo_seq.nextval from dual;
NEXTVAL
----------
2
SQL> select demo_seq.currval from dual;
CURRVAL
----------
2
References:
http://www.techonthenet.com/oracle/sequences.php
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_6015.htm
精彩评论