我是Oracle的新手。
“我的客户”表中包含ID和名称列。
ID是一个数字(10),显然Oracle不支持增量标识。
如何在Oracle中获取最新的可用ID + 1?
INSERT INTO Clients (ID, Name) VALUES (?, Name)
我们不想使用触发器。
答案 0 :(得分:3)
Oracle提供了一种高度可伸缩的方法,可以使用名为sequences的模式对象生成数字序列。
您可以通过发出create sequence语句来创建序列。例如:
create sequence Seq1
start with 1
increment by 1
nomaxvalue;
然后,您可以使用curval
或nextval
伪列访问序列的值,这些值在SQL语句中分别返回序列生成的当前值或下一个值,或者从Oracle 11g开始,您可以分配序列的值直接与PL / SQL块中的变量:
话虽如此,如果您不想使用触发器自动用新值填充主键列,您可以在insert语句中使用新创建的序列,如下所示:
INSERT INTO Clients (id, Name)
VALUES (seq1.nextval, Name)