我是甲骨文的新手。
我的客户表有 ID 和名称列。
ID 是 NUMBER(10),显然 Oracle 不支持增量标识。
如何在 Oracle 中获取最新的可用 ID + 1?
INSERT INTO Clients (ID, Name) VALUES (?, Name)
我们不想使用触发器。
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)