当前位置: 首页 > 知识库问答 >
问题:

Insert All导致违反主键的唯一约束

严信瑞
2023-03-14
INSERT ALL
INTO TABLE(C2, C3) VALUES ("Hello","World")
...
...
SELECT 1 from DUAL;
C1 NUMBER(10,0) DEFAULT SEQUENCE1.NEXTVAL NOT NULL,
.
.
CONSTRAINT Constraint1 PRIMARY KEY (C1)

ORA-00001:违反唯一约束(DatabaseName.Constraint1)

这是否是因为insert all执行同步插入而序列没有增加?我尝试使用Insert ALL仅用于新的插入(不是从源表复制到目标表),我不想对每一行使用Insert query。这是我在尝试的一种研究。

共有1个答案

闽哲
2023-03-14

是的,insert all只为插入的所有行生成一个序列值,从而导致约束冲突。将insert all替换为多个select...FROM DUAL UNION all子查询,序列将按预期工作。

此代码将为每一行调用nextval:

insert into table1(c2, c3)
select 'Hello', 'World' from dual union all
select 'Hello', 'World' from dual;

此外,全部联合技巧的运行速度往往比全部插入快。

 类似资料:
  • 以下是SQL部分,我在调试代码时出错: ORA-00001:唯一约束主键违反T_LIAV_AGENT_STATE_APPROVAL... 这是主键约束依赖的2列AV_NAME_ID,AV_STATE... 我没有重复的数据...你认为还有其他原因吗?

  • 当并发客户机试图将数据插入子表时,我们面临唯一的约束冲突问题。 假设我们有1以下的表格。用户user_id、first_name、last_name。2.项目project_idproject_name和project_description。 两者都有着多对多的关系。 当两个客户端试图创建一个新用户时。假设client1创建了user1(id=aa1),子记录项目(id=1)。Client2还创

  • 这是我的stacktrace: 学生表: 学生实体:学生标识默认为自动递增 postgres控制台(这些学生由sql脚本创建): 在此处输入图像描述 我也尝试过这样生成,但这没有帮助 我用postgreql它似乎我有问题与id Generator,谢谢你的想法和答案

  • 我在创建应用程序时遇到了这个问题。因此,每当我添加第一条评论时,问题都不会出现,但当我第二次尝试时,我会收到此错误: 重复的键值违反了唯一约束“tripplanner_discussion_author_id_key”详细信息:键 (author_id)=(1) 已存在。 我试图把放到 models.py,但它根本没有帮助。 models.py views.py 更新 当我登录到另一个用户时,一个

  • 我有一个笑话模型: 现在,当我试图迁移最后一行时,我得到了错误。基本上,我想将一个用户链接到Joke对象,因为我已经有了一个数据库,所以我希望默认值为1,这是管理员用户的id(我检查过了...).Makemigrations工作正常,但是当我尝试迁移时,我得到了这个: 我真的不明白怎么了。有什么想法吗?