问题标签 [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 投票
3 回答
5747 浏览

sql - 使用唯一约束更新数据库记录

鉴于以下简单的表结构(SQL Server 2008),我希望能够保持我的数字序列列的唯一性,但我希望能够更新任何给定记录的该值。

我的界面允许我混淆项目的顺序,并且在更新之前我会知道它们应该在哪个非重叠序列中,但是我如何在不违反唯一约束的情况下执行更新?

例如,假设我有这些记录:

我想将它们的序列号更新为以下内容:

但实际上我可以处理几十个项目。序号不得重叠。我曾考虑过尝试使用触发器或暂时禁用约束,但这似乎会产生更多问题。我正在使用 C# 和 LINQ-to-SQL,但我对严格的数据库解决方案持开放态度。

0 投票
1 回答
850 浏览

hibernate - 如何避免使用 hibernate 违反唯一约束?

我有一个数据库表,其中一个列定义了唯一约束。我还有一个带有多个线程的消息处理系统。在使用消息时,有时两条消息包含具有相同值的相同实体(定义了唯一约束的列的值)。所以在代码中,服务层首先通过使用这个唯一字段(通过hibernate命名查询)来查询数据库,看看是否有任何记录存在。如果不是,则插入一条新记录。如果具有此唯一字段的记录已存在,则它不会插入记录,而是更新它并在另一个表中插入一条子记录。

我遇到了一个问题,其中第二个线程认为该记录尚不存在,因此它尝试将其插入。但是,此时第一个线程已经成功插入了记录。因此,违反唯一约束会引发异常。你能帮助使用hibernate/oracle解决方案处理这种情况的最佳方法是什么?我需要某种锁定选项吗?谢谢。

0 投票
3 回答
78526 浏览

sql - 唯一约束的命名约定

命名约定很重要,主键和外键具有常用且明显的约定(分别为PK_Table和)。FK_Table_ReferencedTable索引的IX_Table_Column命名也相当标准。

UNIQUE 约束呢?此约束是否有普遍接受的命名约定?我见过UK_TableName_Column,UQ_TableName_Column和有人推荐AX_TableName_Column- 我不知道这是从哪里来的。

我通常使用过UQ,但我不是特别喜欢它,而且我不喜欢为自己选择使用它而反对UK倡导者辩护。

我只是想看看是否就最流行的命名达成共识,或者对为什么一个比其他更有意义的一个很好的推理。

0 投票
6 回答
11081 浏览

mysql - UNIQUE 约束,仅当字段包含特定值时

我正在尝试为两列创建一个 UNIQUE INDEX 约束,但仅当另一列包含值 1 时。例如,column_1并且column_2仅在active = 1. 任何包含的行都active = 0可以与另一行共享值,column_1column_2不管另一行的值active是什么。但是active = 1不能column_1column_2具有active = 1.

我所说的“共享”是指在同一列中具有相同值的两行。示例:row1.a = row2.a AND row1.b = row2.b。仅当 row1 中的两列都与 row2 中的其他两列匹配时,才会共享值。

我希望我说清楚了。:\

0 投票
1 回答
190 浏览

ruby - Rails 中多态关联子类别的方法

大家好,我有一个多态关联,目前正在与几个不同的模型一起使用。每个模型都有与之关联的自己的视频文件,因此它使用“可视频”多态关联。然而,我最近发现需要创建一个具有 2 种不同类型视频的新模型。我会让代码说话。

理想情况下,分配模型将具有两种特殊类型的视频对象,同时仍使用多态关联。我考虑过单表继承,但我不确定这是最好的方法。我有哪些选择?我不想创建 video_draft 模型和 video_final 模型,因为到最后,它们只是像其他所有内容一样的视频附件。唯一的区别是它们是专门的视频附件,需要自己独特的参考。

0 投票
4 回答
8884 浏览

ruby-on-rails - HABTM - 唯一性约束

我有两个具有 HABTM 关系的模型——用户和角色。

  • 用户 - has_and_belongs_to_many :roles
  • 角色 - belongs_to :user

我想在连接(users_roles 表)中添加一个唯一性约束,说明 user_id 和 role_id 必须是唯一的。在 Rails 中,看起来像:

当然,在 Rails 中,我们通常没有模型来表示 HABTM 关联中的连接关系。

所以我的问题是添加约束的最佳位置在哪里?

0 投票
1 回答
1349 浏览

c# - 使用 SQL Server、MySQL 数据库创建唯一约束

如何在 SQL Server 或 MySQL 中创建唯一约束。例如,我有一个以“CustomerID”作为主键的“客户”表。如果我希望'CustomerCode' 是唯一的(即没有重复),我如何在 SQL Server studio 2008 中配置它?

0 投票
9 回答
22196 浏览

java - 使用 Hibernate 基于唯一键查找或插入

我正在尝试编写一种方法,该方法将基于唯一但非主键返回 Hibernate 对象。如果实体已经存在于数据库中,我想返回它,但如果它不存在,我想创建一个新实例并在返回之前保存它。

更新:让我澄清一下,我正在为其编写的应用程序基本上是输入文件的批处理器。系统需要逐行读取文件并将记录插入到数据库中。文件格式基本上是我们模式中几个表的非规范化视图,所以我要做的是解析父记录,或者将其插入数据库,以便我可以获得一个新的合成键,或者如果它已经存在,则选择它。然后,我可以在具有外键的其他表中添加额外的关联记录回到该记录。

这变得棘手的原因是每个文件都需要完全导入或根本不导入,即对给定文件所做的所有插入和更新都应该是一个事务的一部分。如果只有一个进程在执行所有导入,这很容易,但如果可能的话,我想将其拆分到多台服务器上。由于这些限制,我需要能够留在一个事务中,但要处理已经存在记录的异常。

父记录的映射类如下所示:

我最初编写此方法的尝试如下:

问题是当我要查找的名称存在时,调用 uniqueResult() 会引发 org.hibernate.AssertionFailure 异常。完整的堆栈跟踪如下:

有谁知道是什么导致这个异常被抛出?hibernate 是否支持更好的方法来实现这一点?

让我也先发制人地解释为什么我要先插入,然后再选择是否以及何时失败。这需要在分布式环境中工作,因此我无法在检查中同步以查看记录是否已经存在和插入。最简单的方法是让数据库通过检查每次插入时的约束冲突来处理这种同步。

0 投票
7 回答
199586 浏览

mysql - MySQL - 使现有字段唯一

我有一个已经存在的表,其中的字段应该是唯一的,但不是。我只知道这一点,因为在表中创建了一个与另一个已经存在的条目具有相同值的条目,这导致了问题。

如何使该字段仅接受唯一值?

0 投票
3 回答
3369 浏览

mysql - MySQL UNIQUE 约束条件

我正在尝试为具有以下条件的两列(id_1 和 id_2)创建唯一索引约束:如果两个不同的行在 id_2 列中具有相同的值,则它们在 id_1 列中的值也必须相同。

是否可以?

谢谢。