【问题标题】:Insert with select max fail in sql for Oracle在 Oracle 的 sql 中插入 select max 失败
【发布时间】:2013-01-28 22:41:58
【问题描述】:

当使用下面的一堆 INSERT 语句时,它需要永远:

INSERT INTO my_table ( col1, col2, id_col) VALUES ('val1', 'val1', (select max(my_table_ID) from my_table)+1);

如果我一个一个运行并提交,那么它工作正常。是什么原因? 我知道应该在生产中使用序列。但我写这篇文章是为了在蟾蜍中插入几行。

【问题讨论】:

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

标签: sql oracle insert


【解决方案1】:

可能

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;
/

但是,我不知道你的任务... 插入前可以使用序列+触发器吗?

【讨论】:

    猜你喜欢
    • 2017-05-21
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多