sql - 在循环语句 Oracle9 中插入 id
问题描述
我正在尝试使用 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
任何想法为什么我仍然会得到一个独特的约束错误?
解决方案
我猜表 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 ....;
推荐阅读
- c++11 - 根据条件求 y 的值:
- javascript - 如何在 Phaser 3 中阻止场景为空白
- pyttsx3 - PYTTSX3 AttributeError:模块“驱动程序”没有属性“驱动程序代理”
- arrays - 如何从数组中消除在python中不同索引位置具有共同元素的行?
- php - Php Laravel 迁移@@version 问题
- language-agnostic - 为什么在实现邻接表时基于哈希表的数据结构不是默认的?
- amazon-web-services - 无法在 AWS Educate 中创建 IAM
- centos - 将 Yum Repo 限制为特定的包名称
- c# - 动画化以编程方式创建的 xaml 对象的翻译
- reactjs - 创建一个没有侧边栏和路由的默认页面