如何在Oracle中获取最新的ID + 1?

时间:2013-09-23 16:23:36

标签: database oracle insert identity

我是Oracle的新手。

“我的客户”表中包含ID和名称列。

ID是一个数字(10),显然Oracle不支持增量标识。

如何在Oracle中获取最新的可用ID + 1?

INSERT INTO Clients (ID, Name) VALUES (?, Name)

我们不想使用触发器。

1 个答案:

答案 0 :(得分:3)

Oracle提供了一种高度可伸缩的方法,可以使用名为sequences的模式对象生成数字序列。

您可以通过发出create sequence语句来创建序列。例如:

create sequence Seq1
start with 1         
increment by 1   
nomaxvalue;

然后,您可以使用curvalnextval伪列访问序列的值,这些值在SQL语句中分别返回序列生成的当前值或下一个值,或者从Oracle 11g开始,您可以分配序列的值直接与PL / SQL块中的变量:

话虽如此,如果您不想使用触发器自动用新值填充主键列,您可以在insert语句中使用新创建的序列,如下所示:

INSERT INTO Clients (id, Name) 
   VALUES (seq1.nextval, Name)