我的桌子有两个独特的列:
CREATE TABLE "users" (
"id" bigserial PRIMARY KEY,
"phone" varchar(20) UNIQUE,
"email" varchar(50) UNIQUE
);
我想编写保存或更新方法
我的jooq代码:
dsl.insertInto(Users.USERS)
.set(Users.USERS.EMAIL, user.getEmail())
.set(Users.USERS.PHONE, user.getPhone())
.onConflict(Users.USERS.PHONE, Users.USERS.EMAIL)
.doNothing()
.execute();
但我遇到了异常:
“错误:没有唯一或排除约束匹配ON CONFLICT规范”
请帮助。
错误表明它是正确的。您指定了一个onConflict子句,但找不到它现有的唯一索引。您有两个独立的唯一索引,但onConflict指定了两列。如果您在电话和电子邮件上同时定义了一个唯一的索引,那么您的查询就会起作用。
解决方案1:在2列上添加一个唯一的索引,通过唯一的(电话,电子邮件)
应该可以修复它(假设您希望电话和电子邮件的组合是唯一的)。
解决方案2:使冲突对应于唯一的索引。一个用于电话,另一个用于电子邮件。请考虑使用on冲突(). doNO()
对任何可能发生的约束冲突不做任何事情。
错误:没有唯一或排除约束匹配ON CONFLICT规范SQL状态:42P10 查询:
当执行以下类型的插入时,我得到以下错误: 查询: 错误: SQL执行失败(原因:错误:没有与冲突规范匹配的唯一或排除约束) 我也有一个独特的索引: 问题是它有时有效,但不是每次都有效。我随机得到这个例外,这真的很奇怪。它似乎无法访问该索引,或者不知道它存在。 有什么建议吗? 我使用的是PostgreSQL 9.5.5。 执行试图查找或创建帐户的代码时的示例: 在这种情况下,我确信该帐户不存在。此外
我试图对一个名为feature_to_model的表执行upsert。但是,我得到了以下错误: 以下是我的桌子规格: 我使用Gorm来查询数据库,这是我的函数调用: 我错过了什么?我不能对任何索引(training_job_id、feature_name、feature_set_name索引)使用唯一约束,因为它们都不是唯一的
这是图式 我会尝试调用命令: 这给了我一个错误:没有唯一或排除约束匹配ON CONFLICT规范 如果我仅将post_id作为约束或仅将链接作为约束(即关于冲突(post_id)或关于冲突(link))而不是两者都包括,则查询可以工作。我想不出这是什么原因。有人知道为什么吗?
我有一个如下表(字段已编辑为相关部分): 如您所见,我有以下对我的应用程序非常重要的索引。 我想做的是,当我遇到重复错误时,将插入到另一个表中。然而,当我执行sql语句时,我无法克服这个小障碍(如下)。 然而,当我尝试运行这个时,我得到了以下结果: 我读过一些关于这个话题的堆栈溢出问题,但我似乎无法根据需要调整答案。这里的链接是我能找到的最接近的链接 Postgers:当使用主键和唯一列时,没有唯
我正试图为注册系统建立一个数据库。然而,我遇到了一个问题,我没有一个特定表的唯一键。我不能制作人工密钥,因为这会破坏数据库的完整性(在弱实体中使用人工密钥不是最佳做法)。如何修复“Sections”表中的此错误,以使“ClassEvents”中的行唯一?