【问题标题】:Inserting an id in a loop statement Oracle9在循环语句 Oracle9 中插入 id
【发布时间】:2018-05-25 08:11:26
【问题描述】:

我正在尝试使用 for 循环在表中插入一堆数据。对于主键,我正在尝试使用序列,但得到的是:

ORA-00001: 违反唯一约束 (constraint_name) 错误。

我的代码如下所示:

FOR a IN (select * from table a)
LOOP 

    select seq.nextval into id1 from dual;

    insert into table b (primarykey, value1...)

    select (id1, value1...) from table c

end loop

任何想法为什么我仍然会收到唯一约束错误?

【问题讨论】:

  • 你能发布确切的代码吗?

标签: sql oracle for-loop plsql unique-constraint


【解决方案1】:

我猜表 c 包含不止一行:

FOR a IN (select * from table_a) LOOP
  select seq.nextval into id1 from dual;

  insert into table_b (primarykey, value1...)
  select id1, value1... from table_c;    
  -- the same id1 will be used for many rows 
  -- and cause `UNIQUE` constraint violation

end loop;

我会改写为:

INSERT INTO table_b(primarykey, value1...)
SELECT seq.nextval, value1, ...
FROM table_c
WHERE ....;

【讨论】:

    猜你喜欢
    • 2015-06-04
    • 1970-01-01
    • 2019-04-14
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多