我很惊讶地看到oracle没有“自动编号”数据类型。有没有办法使用自动数字数据类型,因为我们在MS访问中有这种数据类型?
答案 0 :(得分:6)
This blog post描述了此功能的选项。
下面引用了关键元素,但帖子更深入。
create sequence test_seq start with 1 increment by 1 nomaxvalue;
其次是
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;
答案 1 :(得分:3)
在oracle中,您使用序列。您可以拥有任意数量的序列,并使用其中任何一个序列为任何表中的任何字段分配唯一编号,或者只调用一个序列为变量分配编号。
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
参考文献:
http://www.techonthenet.com/oracle/sequences.php
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_6015.htm