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

database - 几乎唯一的字段应该有索引

我在数据库中有一个字段几乎是唯一的:98% 的时间值是唯一的,但它可能有一些重复。我不会在这个领域做很多搜索;一个月说两次。该表目前有约 5000 条记录,每月将增加约 150 条记录。

这个字段应该有索引吗?

我正在使用 MySQL。

0 投票
3 回答
2238 浏览

mysql - 在同一列上拥有唯一且正常的索引有多大错误?

我有以下表结构

您会注意到,我在 user_id: date_expired&上有重复的索引user_id。我当然想要唯一索引,因为我想确保数据是唯一的。

重复索引的原因是因为没有user_id索引,我的主要搜索查询需要 4 秒。使用额外的索引需要 1 秒。该查询正在加入表user_id并检查date_expired

该表只有 275 条记录。

  • 在同一字段上拥有唯一且正常的索引有多糟糕?
  • 当表是纯 id 时,索引比数据大有多糟糕?
0 投票
16 回答
81332 浏览

php - php中的简短唯一ID

我想创建一个唯一的 id,但uniqid()正在提供类似'492607b0ee414'. 我想要的是类似于 tinyurl 给出的东西:'64k8ra'。越短越好。唯一的要求是它不应该有一个明显的顺序,并且它应该看起来比看似随机的数字序列更漂亮。字母优于数字,理想情况下不会大小写混合。由于条目的数量不会那么多(最多 10000 个左右),因此碰撞的风险并不是一个很大的因素。

任何建议表示赞赏。

0 投票
4 回答
9594 浏览

oracle - 如何约束多个列以防止重复,但忽略空值?

这是我在 Oracle 数据库 (10g) 中运行的一个小实验。除了(Oracle 的)实现方便之外,我无法弄清楚为什么一些插入被接受而另一些被拒绝。

假设偶尔有一些列值未知的行是有意义的,我可以想到两个可能的涉及防止重复的用例:
1. 我想拒绝重复,但在任何受约束的列的值未知时接受。
2. 我想拒绝重复,即使在约束列的值未知的情况下。

显然,Oracle 实现了一些不同的东西:
3. 拒绝重复,但(仅)在所有受约束的列值都未知时接受。

我可以想办法利用 Oracle 的实现来处理用例 (2)——例如,为“未知”设置一个特殊值,并使列不可为空。但我不知道如何使用用例(1)。

换句话说,我怎样才能让 Oracle 这样做呢?

0 投票
1 回答
11814 浏览

mysql - Navicat 中的 MySQL 视图 - 如何定义“主键”?

通常当我在 Navicat 中定义视图时,我会收到以下消息:

xxx 没有主键。将使用以下伪语句更新此表: UPDATE xxx SET ModifiedFieldsAndValues WHERE AllFieldsAndOldValues LIMIT 1

显然我只使用我的视图来查看数据,而不是更新. 但这确实让我很好奇:

有没有办法在视图上定义“主键”或“唯一索引”?

0 投票
2 回答
3131 浏览

sql-server - SQL Server 唯一索引允许重复

我正在使用 SQL Server 2008,有一个以 id(数字)列作为主键的表。在三个 varchar 列上也有一个唯一索引。我能够添加具有完全相同的三列集合的行。我通过对值的简单查询进行了验证,并返回了 2 行。

我编辑了索引并添加了 id 列。当我尝试再次编辑它并删除它抱怨有重复行的 id 列时,它删除了索引但无法创建它。

然后我清理重复的数据库,使用与唯一和非聚集相同的 3 个 varchars 重新创建索引,现在它可以正常工作,不允许重复。

有谁知道为什么这个索引的唯一性被忽略了?

0 投票
5 回答
66866 浏览

sql-server-2005 - 由于不存在的重复项而无法创建索引?

运行以下 Transact-SQL 命令时出现错误:

错误是:

消息 1505,级别 16,状态 1,第 1 行 CREATE UNIQUE INDEX 语句终止,因为为对象名称“dbo.DimMeasureTopic”和索引名称“IX_TopicShortName”找到重复键。重复键值为 ()。

当我运行SELECT * FROM sys.indexes WHERE name = 'IX_TopicShortName'SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[DimMeasureTopic]')IX_TopicShortName 索引不显示时。所以似乎没有重复。

我在另一个数据库中有相同的架构,并且可以在那里创建索引而不会出现问题。任何想法为什么它不会在这里创建?

0 投票
6 回答
14355 浏览

cakephp - cakephp isUnique 对于 2 个字段?

我有一个注册表单,用户可以在其中填写两个电子邮件地址(email1 和 email2)。营销的要求是它们必须是唯一的(如果我们有 10 个用户,那么唯一的,那么将有 10*2=20 个唯一的电子邮件地址)。

该系统已经建立在 cakephp 上,所以我想知道的是,是否有类似于 isUnique 功能(在一个领域中唯一)可以立即执行此操作?还是我注定要自己编写代码?提前致谢。

编辑:建立在理查德的例子上,这对我有用:

0 投票
2 回答
242 浏览

nhibernate - 检查数据库是否引发特定异常

使用休眠;

我正在尝试在某些列上具有唯一索引的表上插入几个值。

我想知道特定插入是否会因违反唯一约束而引发异常。

那么,我应该捕获哪种特定的异常类型?我只想抓住这个特定的,让所有其他人上去。

非常感谢!

0 投票
2 回答
501 浏览

sql - 更新与唯一索引冲突的多行

我正在使用 Microsoft SQL Server,并且我有一个主从场景,我需要存储详细信息的顺序。所以在 Detail 表中,我有 ID、MasterID、Position 和其他一些列。MasterID 和 Position 上还有一个唯一索引。它工作正常,除了一种情况:当我有一些现有的详细信息并更改它们的顺序时。例如,当我将位置 3 上的详细信息更改为位置 2 上的详细信息时。当我保存位置 2 上的详细信息(在数据库中的位置等于 3)时,SQL Server 会抗议,因为索引唯一性约束。

如何以合理的方式解决这个问题?

提前谢谢你
Lukasz Glaz