我的桌子有两个独特的列:
CREATE TABLE "users" (
"id" bigserial PRIMARY KEY,
"phone" varchar(20) UNIQUE,
"email" varchar(50) UNIQUE
);
我想写保存或更新方法
My jooq code:
java prettyprint-override">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:使冲突对应于唯一的索引。一个用于电话,另一个用于电子邮件。
希望这有帮助。
我想用插页。。请务必更新。。对两列具有唯一约束的表的语法。这可能吗? mytable对col1和col2有单独的唯一约束。 我可以写: 然而,这不起作用: 错误:冲突时,更新是否需要推理规范或约束名称 这也不起作用: 错误:不存在与冲突规范匹配的唯一或排除约束 这种语法似乎是为两列上的单一复合唯一约束而设计的,而不是两个约束。 如果违反了其中一个唯一约束,有没有办法进行条件更新?这个问题是如何在博
当尝试使用PostgreSQL执行时,我遇到了一个我不理解的行为。文档似乎指示语句的冲突目标可以是索引表达式或约束名称。但是,当试图引用约束名称时,我得到了一个“列...不存在”错误。 我的第一次尝试是创建一个索引,它可以很好地处理约束推理: 在描述上表时,我在“索引”下看到了以下内容: 我的第二次尝试是将唯一约束显式地放在创建表中: 在描述上表时,“索引:”的输出略有不同(“唯一约束”与前一示例
我有一个Spring MVC应用程序,它使用Spring Data JPA作为我的JPA提供者来持久化Hibernate。我有一个数据库表,在列上有一个唯一的约束,因此为什么保存相应的实体可能会导致唯一的约束冲突。我想检测这是否发生在我的服务层中,以便我可以向用户呈现有意义的错误消息。以下是我的服务方法。 我的Spring Data JPA存储库看起来像这样: 现在,当发生唯一的约束冲突时,我得到
我有一个用户创建屏幕,它记录了各种用户详细信息以及名字和手机号码。我有一个对应的用户表,其中名字和手机号码构成一个复合唯一键。此表中还定义了其他完整性约束。 当在创建用户屏幕上输入违反此约束的用户数据时,需要向用户显示“用户友好”错误消息。 当这种违反发生时,我从MySQL数据库中得到的异常是: 有两个选项可以显示有意义的消息(例如:“错误:给定手机号码的用户名已存在,请更改其中一个”)。 选项1
问题内容: 假设我们有这些表: 是否有可能在上创建唯一约束,使得对于最多一个引用中的所有行,其值都为??陈述另一种方法,我可以创建一个唯一约束,以便上述表的连接没有重复项吗?我没有考虑- 我可以找到的每个数据库的语法似乎都与每个约束都限制在一个表上- 但这可能是我缺乏想象力的原因。(当然,去规范化以包含on是一种解决方案。) 问题答案: 您可以尝试以下方法。您必须在Parent中创建一个冗余的UN
问题内容: 问题概述 在看似随机的时间,我们会收到一个异常“ PostgreSQL重复键违反了唯一约束”。我确实认为我知道我们的问题是什么,但是我不想在没有可重现的测试用例的情况下对代码进行更改。但是由于除了随机生产之外,我们无法在任何环境中复制它,因此我要求SO的帮助。 在这个项目中,我们有多个postgres数据库,并且为每个数据库中的每个表配置了主键序列。这些序列是这样创建的: 我们使用以下