0

我是甲骨文的新手。

我的客户表有 ID 和名称列。

ID 是 NUMBER(10),显然 Oracle 不支持增量标识。

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

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

我们不想使用触发器。

4

1 回答 1

3

Oracle 提供了一种高度可扩展的方法,通过使用称为序列的模式对象来生成数字序列。

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

create sequence Seq1
start with 1         
increment by 1   
nomaxvalue;

curval然后,您可以使用或伪列访问序列的值nextval,它们分别返回由序列生成的当前值或下一个值,在 SQL 语句中或从 Oracle 11g 开始,您可以将序列的值直接分配给 PL/SQL 中的变量堵塞:

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

INSERT INTO Clients (id, Name) 
   VALUES (seq1.nextval, Name)
于 2013-09-23T17:01:07.140 回答