我正在使用oracle DB。我试图从表中选择最大数字,然后将其递增1然后重新插入它作为新记录,例如:
insert into table1(id,name) values (select max(id) from table1 + 1,'name2');
但是它让我失去了表达错误。
提前感谢。
答案 0 :(得分:13)
INSERT INTO table1( id, name )
SELECT max(id) + 1, 'name2'
FROM table1
将是有效的语法。这种生成id
值的方法是一种非常糟糕的方法。它在多用户环境中不起作用,因为许多不同的会话可能获得相同的id
值。它也比使用序列效率低得多。
答案 1 :(得分:3)
insert into table1(id,name) values ( (select max(id) from table1 ) + 1,'name2')
答案 2 :(得分:0)
通过选择插入表格时,不需要关键字values
insert into table1(id,name) (select max(id) from table1 + 1,'name2');