问题标签 [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.
sql - SQL 我可以对表有“条件唯一”约束吗?
在我的职业生涯中,我曾多次遇到过这个问题,但我当地的同龄人似乎都无法回答这个问题。假设我有一个表,其中有一个“描述”字段,它是一个候选键,除了有时用户会在过程中途停止。因此,对于可能 25% 的记录,此值为空,但对于所有非空的,它必须是唯一的。
另一个示例可能是必须维护记录的多个“版本”的表,并且位值指示哪个是“活动”的。因此“候选密钥”总是被填充,但可能存在三个相同的版本(有效位中的 0)和只有一个有效的版本(有效位中的 1)。
我有解决这些问题的替代方法(在第一种情况下,在存储过程或业务层中强制执行规则代码,在第二种情况下,使用触发器填充存档表并在需要历史记录时对表进行 UNION) . 我不想要替代品(除非有明显更好的解决方案),我只是想知道是否有任何风格的 SQL 可以以这种方式表达“条件唯一性”。我正在使用 MS SQL,所以如果有办法做到这一点,那就太好了。我主要只是在学术上对这个问题感兴趣。
sql - 在 PostgreSQL 中更新具有非空和唯一约束的列的特殊情况
这是一个玩具示例,说明了 PostgreSQL 中的一个实际问题。以下示例使用的是 PostgreSQL 8.4.3 服务器,但我怀疑其他版本也有同样的问题。
给定下表:
可以将表格修改为如下所示:
不删除行或修改表架构?这个:
不起作用。
如果允许删除,则:
作品。对于这个例子来说,它不是最简单的解决方案,但它很容易推广到更复杂的例子。
sql-server - 唯一约束与唯一索引
我有兴趣了解开发人员更喜欢使用哪种技术来强制 SQL Server 中的唯一性:UNIQUE CONSTRAINT 或 UNIQUE INDEX。鉴于每个的物理实现几乎没有区别,你如何决定哪个是最好的?
除了性能之外还有其他原因来评估最佳解决方案吗?
两者之间是否存在数据库管理优势?
database - HowTo:在对象保存时唯一索引失败时显示自定义错误消息
我在表上添加了一个索引,只是为了确保一组字段一起形成一个复合唯一键(这种方法正确吗?或者 Doctrine 有更好的选择吗?)
完成此操作后,当我尝试保存对象并且唯一约束失败时,会生成 SQL 异常。处理这个问题的最佳方法是什么?并显示自定义错误消息?
我的作业
检查来自 MySQL 的异常代码并处理它。但是,如果有多个这样的限制,我们将无法确定确切的一个
在架构上添加一个 postValidator,并在其中编写逻辑
有第三种/更好的方法吗?
谢谢
java - 使用 JPA 唯一约束丢失交易?
我有一个具有唯一约束的字段:
当我尝试保存具有相同值的两个实体时,我得到一个异常 - 但另一个异常不是我执行的:
有问题的过滤方法如下所示:
...和这样的 ThreadLocalEntityManager :
我包装了对 with 的调用以save
处理try ...catch
违反唯一约束的情况,但这不起作用:
知道为什么没有交易吗?处理唯一约束违规的正确方法是什么?
sql - SQL:如何根据两个字段查找重复项?
我在 Oracle 数据库表中有行,对于两个字段的组合应该是唯一的,但表上没有设置唯一约束,因此我需要使用 SQL 自己查找所有违反约束的行。不幸的是,我微薄的 SQL 技能无法胜任这项任务。
我的表有三个相关的列:entity_id、station_id 和 obs_year。对于每一行,station_id 和 obs_year 的组合应该是唯一的,我想通过使用 SQL 查询将它们刷新出来来确定是否存在违反此规则的行。
我已经尝试了以下 SQL(由this previous question建议),但它对我不起作用(我得到 ORA-00918 列的定义不明确):
有人可以建议我做错了什么,和/或如何解决这个问题?
hibernate - 如何使用注释指定列的组合应该是唯一约束?
我想确保我的表中的所有行都具有两个字段的唯一组合,并且我想在我的实体类中使用注释来指定它。我尝试过使用@Table 和@UniqueConstraint 的组合,但显然我做错了,因为我似乎只能指定单独的列应该是唯一的(我已经可以指定使用@Column 的唯一属性)而不是而不是列的组合。例如,我想要一个具有字段 A 和 B 的表仅包含具有 A 和 B 的唯一组合的行。字段/列都不需要是唯一的,它是两者的组合应该是唯一的。
这是我迄今为止没有高兴地尝试过的:
和
有人可以建议正确的方法吗?此外,如果可以使用 JPA 注释而不是特定于 Hibernate 的注释,那就更好了。
在此先感谢您的帮助。
- 詹姆士
java - Hibernate 在更新唯一键的字段部分时抛出唯一约束冲突异常
下面是用例:我在 3 列上定义了一个唯一索引,比如 A、B、C。假设其中的值为 A1,B1,C1。我的 java 代码正在添加一条新记录,例如 A1、B1、C1,但在添加此记录之前,我将先前的值从 C1 更新为 C2。在尝试添加新记录时(更新后),hibernate 抛出了一个唯一的约束违规异常。为什么会这样?以上所有语句都在同一个事务中执行。我的假设是插入发生在更新之前,因此是异常的原因。
有什么想法/建议吗?
python - 使用多个表中的数据的唯一约束(SQL / SQLAlchemy)
一个名为的顶级类Parametric
用于创建可以具有与之关联的参数的对象:
我将 SQLAlchemy 用于我的 ORM 引擎。
我想施加一个UNIQUE
约束,以确保组合 ( name
, prop
) 对于给定类是唯一的(例如,只能Foo
调用的一个实例"my_foo"
并且其prop
值为"my_prop"
),但我不知道如何name
从Parametric
在Foo
表格UNIQUECONSTRAINT
部分。
这种独特性是可以通过FOREIGN KEY
指令强加的吗?
java - Hibernate 和 NonUniqueObjectException
我有一个实体,其中包含其他两个具有@ManyToOne 关系的实体。
如果我尝试保存具有另一个 A 记录的“B_ID”和“C_ID”的 A 实例,我会得到异常:
org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与会话关联
例如:
B_ID 和 C_ID 在我的模型中不是唯一的,并且 (B_ID + C_ID) 不是唯一约束!!
我能做些什么?
预先感谢。