将最大选定值作为新记录oracle插入

Sam*_*nna 4 sql oracle oracle10g

我正在使用oracle DB.我试图从表中选择最大数字,然后将其递增1然后重新插入它作为新记录,例如: insert into table1(id,name) values (select max(id) from table1 + 1,'name2');

但它让我失去了表达错误.

提前致谢.

Jus*_*ave 14

INSERT INTO table1( id, name )
  SELECT max(id) + 1, 'name2'
    FROM table1
Run Code Online (Sandbox Code Playgroud)

将是有效的语法.这种产生id价值的方法是一种非常差的方法.它在多用户环境中不起作用,因为许多不同的会话可能获得相同的id值.它也比使用序列效率低得多.


Sam*_*nna 5

insert into table1(id,name) values ( (select max(id) from table1 ) + 1,'name2')
Run Code Online (Sandbox Code Playgroud)


aru*_*b2w 1

通过选择插入表时,不需要关键字values

insert into table1(id,name) (select max(id) from table1 + 1,'name2');
Run Code Online (Sandbox Code Playgroud)