Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database oracle是否具有“自动编号”数据类型_Database_Oracle - Fatal编程技术网

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

Database oracle是否具有“自动编号”数据类型,database,oracle,Database,Oracle,我很惊讶地看到oracle没有自动编号数据类型。在MS access中使用自动编号数据类型时,是否有任何方法可以使用自动编号数据类型?介绍了此功能的一个选项 下面引用了一些关键要素,但这篇文章更深入了 接 或 在oracle中,使用序列。您可以拥有任意数量的序列,并使用任意序列为任何表中的任何字段分配唯一的编号,或者只需调用一个序列为变量分配编号 SQL> CREATE SEQUENCE demo_seq INCREMENT BY 1 MAXVALUE 999999999999999999

我很惊讶地看到oracle没有自动编号数据类型。在MS access中使用自动编号数据类型时,是否有任何方法可以使用自动编号数据类型?

介绍了此功能的一个选项

下面引用了一些关键要素,但这篇文章更深入了


在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   
参考资料:


大多数大型RDBMS都没有称为自动编号的数据类型。主要是因为一个自动编号通常是一个整数。在SQL Server中,您可以做一些其他的事情来自动输入该编号,而不是将其数据类型设置为神奇的自动编号。序列比自动编号更灵活/强大/可伸缩。谢天谢地,现在的序列是ANSI。SQL Server Denali最终将支持Oracle、PostgreSQL和DB2的功能。您提供的链接没有打开。链接为我打开,讨论通过触发器实现的序列,suchIt也为我工作;在我的特定示例中,更新答案以包含quotes.NOMAXVALUE更有意义,但我想表明,如果读者决定不关注我的链接,则该参数存在,以便可以用于任何必要的用途。
insert into test values(test_seq.nextval, 'voila!');
create trigger test_trigger
before insert on test
for each row
begin
select test_seq.nextval into :new.id from dual;
end;
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