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