问题标签 [unique-constraint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
21098 浏览

sql - SQL 我可以对表有“条件唯一”约束吗?

在我的职业生涯中,我曾多次遇到过这个问题,但我当地的同龄人似乎都无法回答这个问题。假设我有一个表,其中有一个“描述”字段,它是一个候选键,除了有时用户会在过程中途停止。因此,对于可能 25% 的记录,此值为空,但对于所有非空的,它必须是唯一的。

另一个示例可能是必须维护记录的多个“版本”的表,并且位值指示哪个是“活动”的。因此“候选密钥”总是被填充,但可能存在三个相同的版本(有效位中的 0)和只有一个有效的版本(有效位中的 1)。

我有解决这些问题的替代方法(在第一种情况下,在存储过程或业务层中强制执行规则代码,在第二种情况下,使用触发器填充存档表并在需要历史记录时对表进行 UNION) . 我不想要替代品(除非有明显更好的解决方案),我只是想知道是否有任何风格的 SQL 可以以这种方式表达“条件唯一性”。我正在使用 MS SQL,所以如果有办法做到这一点,那就太好了。我主要只是在学术上对这个问题感兴趣。

0 投票
1 回答
930 浏览

sql - 在 PostgreSQL 中更新具有非空和唯一约束的列的特殊情况

这是一个玩具示例,说明了 PostgreSQL 中的一个实际问题。以下示例使用的是 PostgreSQL 8.4.3 服务器,但我怀疑其他版本也有同样的问题。

给定下表:

可以将表格修改为如下所示:

不删除行或修改表架构?这个:

不起作用。

如果允许删除,则:

作品。对于这个例子来说,它不是最简单的解决方案,但它很容易推广到更复杂的例子。

0 投票
4 回答
20167 浏览

sql-server - 唯一约束与唯一索引

我有兴趣了解开发人员更喜欢使用哪种技术来强制 SQL Server 中的唯一性:UNIQUE CONSTRAINT 或 UNIQUE INDEX。鉴于每个的物理实现几乎没有区别,你如何决定哪个是最好的?

除了性能之外还有其他原因来评估最佳解决方案吗?

两者之间是否存在数据库管理优势?

0 投票
2 回答
619 浏览

database - HowTo:在对象保存时唯一索引失败时显示自定义错误消息

我在表上添加了一个索引,只是为了确保一组字段一起形成一个复合唯一键(这种方法正确吗?或者 Doctrine 有更好的选择吗?)

完成此操作后,当我尝试保存对象并且唯一约束失败时,会生成 SQL 异常。处理这个问题的最佳方法是什么?并显示自定义错误消息?

我的作业

  1. 检查来自 MySQL 的异常代码并处理它。但是,如果有多个这样的限制,我们将无法确定确切的一个

  2. 在架构上添加一个 postValidator,并在其中编写逻辑

有第三种/更好的方法吗?

谢谢

0 投票
2 回答
2573 浏览

java - 使用 JPA 唯一约束丢失交易?

我有一个具有唯一约束的字段:

当我尝试保存具有相同值的两个实体时,我得到一个异常 - 但另一个异常不是我执行的:

有问题的过滤方法如下所示:

...和这样的 ThreadLocalEntityManager :

我包装了对 with 的调用以save处理try ...catch违反唯一约束的情况,但这不起作用:

知道为什么没有交易吗?处理唯一约束违规的正确方法是什么?

0 投票
9 回答
75662 浏览

sql - SQL:如何根据两个字段查找重复项?

我在 Oracle 数据库表中有行,对于两个字段的组合应该是唯一的,但表上没有设置唯一约束,因此我需要使用 SQL 自己查找所有违反约束的行。不幸的是,我微薄的 SQL 技能无法胜任这项任务。

我的表有三个相关的列:entity_id、station_id 和 obs_year。对于每一行,station_id 和 obs_year 的组合应该是唯一的,我想通过使用 SQL 查询将它们刷新出来来确定是否存在违反此规则的行。

我已经尝试了以下 SQL(由this previous question建议),但它对我不起作用(我得到 ORA-00918 列的定义不明确):

有人可以建议我做错了什么,和/或如何解决这个问题?

0 投票
1 回答
8741 浏览

hibernate - 如何使用注释指定列的组合应该是唯一约束?

我想确保我的表中的所有行都具有两个字段的唯一组合,并且我想在我的实体类中使用注释来指定它。我尝试过使用@Table 和@UniqueConstraint 的组合,但显然我做错了,因为我似乎只能指定单独的列应该是唯一的(我已经可以指定使用@Column 的唯一属性)而不是而不是列的组合。例如,我想要一个具有字段 A 和 B 的表仅包含具有 A 和 B 的唯一组合的行。字段/列都不需要是唯一的,它是两者的组合应该是唯一的。

这是我迄今为止没有高兴地尝试过的:

有人可以建议正确的方法吗?此外,如果可以使用 JPA 注释而不是特定于 Hibernate 的注释,那就更好了。

在此先感谢您的帮助。

- 詹姆士

0 投票
2 回答
15121 浏览

java - Hibernate 在更新唯一键的字段部分时抛出唯一约束冲突异常

下面是用例:我在 3 列上定义了一个唯一索引,比如 A、B、C。假设其中的值为 A1,B1,C1。我的 java 代码正在添加一条新记录,例如 A1、B1、C1,但在添加此记录之前,我将先前的值从 C1 更新为 C2。在尝试添加新记录时(更新后),hibernate 抛出了一个唯一的约束违规异常。为什么会这样?以上所有语句都在同一个事务中执行。我的假设是插入发生在更新之前,因此是异常的原因。

有什么想法/建议吗?

0 投票
2 回答
2140 浏览

python - 使用多个表中的数据的唯一约束(SQL / SQLAlchemy)

一个名为的顶级类Parametric用于创建可以具有与之关联的参数的对象:

我将 SQLAlchemy 用于我的 ORM 引擎。

我想施加一个UNIQUE约束,以确保组合 ( name, prop) 对于给定类是唯一的(例如,只能Foo调用的一个实例"my_foo"并且其prop值为"my_prop"),但我不知道如何nameParametricFoo表格UNIQUECONSTRAINT部分。

这种独特性是可以通过FOREIGN KEY指令强加的吗?

0 投票
1 回答
14182 浏览

java - Hibernate 和 NonUniqueObjectException

我有一个实体,其中包含其他两个具有@ManyToOne 关系的实体。

如果我尝试保存具有另一个 A 记录的“B_ID”和“C_ID”的 A 实例,我会得到异常:

org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与会话关联

例如:

B_ID 和 C_ID 在我的模型中不是唯一的,并且 (B_ID + C_ID) 不是唯一约束!!

我能做些什么?

预先感谢。