在sql for Oracle中使用select max fail插入

在sql for Oracle中使用select max fail插入,sql,oracle,insert,Sql,Oracle,Insert,当使用以下一组INSERT语句时,需要花费很长时间: INSERT INTO my_table ( col1, col2, id_col) VALUES ('val1', 'val1', (select max(my_table_ID) from my_table)+1); 如果我一个接一个地运行并提交,那么它工作得很好。原因是什么? 我知道生产中应该使用顺序。但我写这篇文章是为了在toad中插入几行 INSERT INTO my_table ( col1, col2, id_col) VA

当使用以下一组INSERT语句时,需要花费很长时间:

INSERT INTO my_table ( col1, col2, id_col) VALUES ('val1', 'val1', (select max(my_table_ID) from my_table)+1);
如果我一个接一个地运行并提交,那么它工作得很好。原因是什么? 我知道生产中应该使用顺序。但我写这篇文章是为了在toad中插入几行

INSERT INTO my_table ( col1, col2, id_col) 
VALUES ('val1', 'val1', (select max(my_table_ID)+1 from my_table));
或在pl/sql块中

declare
v_max number(10);
begin
select max(my_table_id) + 1 into v_max
  from my_table;
insert into my_table ( col1, col2, id_col) 
values ('val1', 'val1', v_max);
end;
/
但是,我不知道你的任务。。。
可以在插入之前使用序列+触发器?

为什么不使用Oracle序列对象呢?糟糕的做法。这种方法会给您带来麻烦。应该使用序列来代替!如果我是对的,那么您是否正在尝试为每个插入创建序列号?@Alfabravo请查看更新的问题。