问题标签 [unique-key]

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 回答
277 浏览

sql-server - 这个表需要一个或两个唯一键索引吗?

我正在尝试创建一个只有 OpenId 注册的用户表,就像 StackOverflow 一样。

我存储在桌子上

  • OpenId 标识符(他们的登录名)
  • 别名(向公众显示的显示名称)
  • 其他一些 openId 的东西

所以...我想确保系统中只有一个用户具有 openId 标识符和一个别名。

当然,我可以随时更改我的别名。我也可以随时更改我的 openId 标识符。我需要确保这些是唯一的/只存在一次。

所以...我是为表创建两个唯一键索引,还是创建一个包含两个字段的唯一键索引?

干杯:)

0 投票
3 回答
22206 浏览

sql-server - Sql Server 唯一键也是索引吗?

我在表中有一个列(例如用户名),我想确保它是唯一的。因此,我为该列创建了一个唯一键并将其命名为 IX_Users_UserName。

现在,如果我根据用户名进行大量搜索,我想确保该字段有一个索引。

我是否需要创建单独的索引,或者唯一键是否也被视为索引,就像主键是聚集唯一键一样?

0 投票
5 回答
6484 浏览

mysql - MySQL 问题 - 唯一键无法正常运行,还是我误解了?

我正在尝试创建一个关系,其中可能包含四个不同部分中的任何一个,但相同部分的任何集合都应该被视为唯一的。

示例:分配必须有一个指定的公司,可以选择有一个指定的位置、工作组和程序。分配可能没有没有位置的工作组。

假设我们有公司 A、B、C;位置 X、Y、Z;工作组 I、J、K 和程序 1、2、3。

所以有效的关系可能包括 A - X - I - 1 A - Z - 2 B - Y C C - 3 B - Z - K

但无效的关系将包括 A - K(无位置的工作组) Y - K - 1(无公司)

所以,为了创建我的表,我创建了

我认为这将处理我的所有关系,除了如果有工作组(我认为我可以很高兴地以编程方式或使用触发器来完成)分配位置的必要性之外

但是,当我测试此架构时,它允许我输入以下内容...

……毫无怨言。我猜 (1, null, null, null) 不等于自身,因为包含了空值。如果是这种情况,有什么办法可以处理这种关系吗?

任何帮助,将不胜感激!

0 投票
5 回答
2519 浏览

postgresql - 仅当 Postgresql 中的列不为空时,如何强制执行约束?

我想要一个仅在列不为空时强制执行约束的解决方案。我似乎无法在文档中找到执行此操作的方法。

根据数据的性质,我将在创建表时拥有标识符 b 和一个值。在我们收到额外的数据后,我将能够填充标识符 a。在这一点上,我想确保 aunique key of (identifier_a, value1)但仅当 identifier_a 存在时。

希望这是有道理的,有人有任何想法吗?

0 投票
5 回答
2560 浏览

sql - 表列的唯一约束

我有一个表(其中包含数据的现有表)并且该表有一个用户名列。我希望这个用户名是唯一的。所以我添加了一个这样的约束:

现在我不断收到此表中存在重复用户的错误。但我已经使用以下查询检查了数据库:

这会产生一个用户列表,所有用户的 NumberOfUsers 都为 1。所以那里没有重复。但是当我检查他失败的用户名时,我看到以下结果:

所以显然他没有比较“e”和“é”或“è”......就像他忽略了这些,有什么办法让sql在添加唯一键约束时不忽略这些重音。

解决方案:

谢谢你们,我找到了解决方案。这解决了问题:

0 投票
3 回答
202 浏览

sql-server - 在 SQL Server 2005 中更改唯一键的影响

在 SQL Server 2005 中更改唯一键有什么影响

我有一个表一个主键 ID int 和 4 个字段的复合唯一键。但是由于我的项目的性质,复合键的键(字段)之一不断变化。

有没有人发现经常更改复合键字段有任何问题?

0 投票
1 回答
404 浏览

nhibernate - NHibernate缓存唯一索引?

我有一些类具有该对象独有的属性,例如对于 User 类,属性 Username 永远不应重复。

NHibernate 似乎不支持通过唯一键加载对象,然后以与 Load() 或 Get() 相同的方式缓存该对象。我这样说对吗?

如果我是,那么我将不得不通过可能沿着 LoadByUniqueIndex(lambda property, object key) 行的扩展方法来扮演我自己的角色。

0 投票
3 回答
4698 浏览

sql - 在 SQL 中创建十六进制数

我想在 SQL 中生成唯一的十六进制数字。我怎样才能做到这一点?

如果您知道如何在 c# 中生成,请也包括在内。

0 投票
2 回答
2293 浏览

asp.net-mvc - 使用 asp.net mvc 和 linq to sql 验证唯一键?

我有一个带有 2 个字段的 sql server 表,ID(主键)和名称(唯一键)。我正在使用 linq to sql 从该表中为 asp.net MVC 生成模型对象。

为了执行模型验证,我在部分类中实现了 IDateErrorInfo

这与 Model.IsValid 属性和 Html.ValidationSummary 帮助程序按预期执行。

但是,此代码只是检查新创建的公司的名称是否不为空。我还需要检查该名称是否已被表中的另一家公司使用。

我可以在我的存储库上调用 AddCompany 方法并捕获 SQLException,但这感觉很脏。

理想情况下,我希望部分类中的 OnNameChanging 方法在尝试添加公司之前执行唯一键检查。

关于我应该如何做到这一点的任何想法?到目前为止,我唯一的想法是在部分类中创建一个新的数据库连接并查询表。

谢谢

0 投票
4 回答
699 浏览

php - 仅当记录不存在时如何添加到 MySQL 表?

我从 JSON 对象中获取字符串数组。我想将这些字符串保存在数据库中,但前提是它们不存在。将数据库中已有的内容与我将要输入的内容进行比较并排除匹配项的最佳方法是什么?

我正在使用 PHP 和 MySQL。