问题标签 [unique-index]

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 投票
2 回答
14322 浏览

ruby-on-rails - Rails 唯一性约束和匹配空列的数据库唯一索引

我的迁移文件中有以下内容

我想确保如果指定了 product_id 它是唯一的,但我也想允许 null 所以我的模型中有以下内容:

效果很好,但我应该在迁移文件中添加一个索引

显然,当为 product_id 插入两个空值时,这将引发异常。我可以简单地省略迁移中的索引,但是我有可能得到两个具有相同 product_id 的 PaymentAgreements,如下所示:并发性和完整性

我的问题是处理这个问题的最好/最常见的方法是什么

0 投票
4 回答
20167 浏览

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

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

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

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

0 投票
2 回答
4046 浏览

mysql - 如何正确使用 UNIQUE 索引?

我在 DB 有 4 个字段。我将它们设置为不能重复条目。它们是:

如果我输入了相同的数据,则无法记录。

但是如果我输入如下,如何使这些数据成功输入:

我想要这样的结果:

0 投票
1 回答
931 浏览

sql-server - SQL Server 2008:唯一索引中忽略了排序规则?

我在我的表上创建了一个复合唯一索引:

整个数据库的排序规则设置为 SQL_Latin1_General_CP1_CI_AS。当我运行以下 T-SQL 时,它会打印“不等于”:

然后,如果我尝试以下插入语句:

我收到以下错误消息:

为什么是这样?我在文档中找不到它,但我假设使用配置的排序规则检查两个键重复的条件。

顺便检查了表、列和索引排序规则,它们都等于数据库排序规则。

0 投票
2 回答
15121 浏览

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

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

有什么想法/建议吗?

0 投票
2 回答
78 浏览

sql-server - 哪种方法更适合这种情况?

我们有下表:

和以下唯一索引:

我们使用 CouponCode 和其他外键(为简单起见,上面未显示)进行非常持续的查询。CampaignCustomer 表有近 400 万条记录并且还在不断增长。我们还开展不需要优惠券代码的活动,因此我们不会插入这些记录。现在我们还需要开始跟踪这些活动以用于其他目的。所以我们有两个选择:

  1. 我们将 CouponCode 列更改为允许空值,并创建一个唯一的过滤索引以不包含空值并允许表变得更大更快。
  2. 为此特定目的创建一个单独的表来跟踪所有活动。

请记住,CampaignCustomer 表经常用于兑换优惠券和插入新优惠券。底线是我们不希望我们的客户兑换优惠券并一直等到他们放弃或其他流程失败。那么,从效率的角度来看,您认为哪个选项最好,为什么?

0 投票
1 回答
1121 浏览

ruby-on-rails - ActiveRecord 关联:如果关联属性匹配,则创建新关联或引用现有关联

我在下面有两个模型。它们可以解释如下:

报告有一个report_detail(确定开始/结束月份)。许多报告可以具有相同的报告详细信息,但没有两个报告详细信息可以相同。

我对 ReportDetail 的索引有一个唯一约束 [:duration, :starting_month, :offset]

我要完成的是:如果一个新报告的 ReportDetail 具有唯一的组合 attrs (:duration, :starting_month, :offset),则创建新的 ReportDetail 并正常保存。如果报表具有 ReportDetail,而现有 ReportDetail 具有相同的属性,则将报表的详细信息与此 ReportDetail 相关联并保存报表。

我通过在report_detail=使用 a时为 setter 设置别名来实现这一点,ReportDetail.find_or_create_by...但它很丑陋(而且它还通过使用 detail 属性实例化新报告来创建不必要的 ReportDetail 条目,并且由于某种原因,我无法使用 来使保存正常工作.find_or_initialize_by...)。我还尝试before_save在 ReportDetail 上说,如果我匹配其他内容,则设置self为其他内容。显然你不能这样设置自己。

对解决此问题的最佳方法有任何想法吗?

请参阅此要点以了解我当前使用别名覆盖的设置器

0 投票
7 回答
28150 浏览

sql-server - Unique index or unique key?

What is the diffrence between a unique index and a unique key?

0 投票
4 回答
890 浏览

sql - INDEX 创建的唯一参数 - 有什么用?

为什么 INDEX 创建语句有 UNIQUE 参数?

据我了解,非聚集索引包含一个书签,一个指向行的指针,它应该是唯一的以区分非唯一行,
因此确保非聚集索引是唯一的?
正确的?

那么,我是否理解非唯一索引只能在聚集表上?自从

  • “视图上的聚集索引必须是唯一的”[1]

由于“聚集索引的底部或叶级包含表的实际数据行”[1],我是否正确理解与 UNIUE 对聚集索引的相同效果可以通过唯一约束来实现(可能全部或表 [2] 的列的一部分?

那么,是什么为索引带来了 UNIQUE 参数?
除了混淆基本概念定义 [3]


更新:
这又是同样的陷阱——根据未定义的术语解释已经多次解释的东西,将所有解释转换为永无止境的猜谜游戏。
请参阅我的子问题 [4],这实际上是对同一问题的重新措辞。


更新 2:
问题在于不明确、缺乏定义或在不恰当的上下文中不恰当地使用术语。如果索引被定义为服务于(查找和)识别/指向真实数据的结构,那么非唯一或 NULL 索引没有任何意义。再见


引用:
[1]
CREATE INDEX (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms188783.aspx

[2]
创建表 (Transact-SQL) http://msdn.microsoft.com/en-us/library/ms174979.aspx

[3]
唯一索引还是唯一键?
唯一索引还是唯一键?

[4]
什么是索引,非聚集索引可以是非唯一的吗?
什么是索引,非聚集索引可以是非唯一的吗?

0 投票
1 回答
193 浏览

mysql - Mysql添加具有重复行的多列索引

有下一张桌子:

我想添加下一个索引

我有多少(由于应用程序验证错误)我有很多重复的行(重复我的意思是相同的 field_1 和相同的 field_2,只有 id 作为差异)

该表大约有 60,000 行,因此...逐个字段删除将非常困难。

如何应用该索引并删除每个重复的行?