oracle是否具有“自动编号”数据类型

时间:2011-06-17 17:43:52

标签: database oracle

我很惊讶地看到oracle没有“自动编号”数据类型。有没有办法使用自动数字数据类型,因为我们在MS访问中有这种数据类型?

2 个答案:

答案 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