问题标签 [constraints]
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 - 表列的唯一约束
我有一个表(其中包含数据的现有表)并且该表有一个用户名列。我希望这个用户名是唯一的。所以我添加了一个这样的约束:
现在我不断收到此表中存在重复用户的错误。但我已经使用以下查询检查了数据库:
这会产生一个用户列表,所有用户的 NumberOfUsers 都为 1。所以那里没有重复。但是当我检查他失败的用户名时,我看到以下结果:
所以显然他没有比较“e”和“é”或“è”......就像他忽略了这些,有什么办法让sql在添加唯一键约束时不忽略这些重音。
解决方案:
谢谢你们,我找到了解决方案。这解决了问题:
unit-testing - 了解单元测试约束和 NUnit 语法助手
我和一位同事正在开始一个新项目并尝试充分利用 TDD。我们仍在弄清楚单元测试的所有概念,并且到目前为止主要基于其他示例。
我的同事最近对 NUnit 语法助手的观点提出了质疑,我正在努力解释它们的好处(因为我自己并不真正理解它,除了我的直觉说它们很好!)。这是一个示例断言:
对我来说,这完全有道理,我们说我们期望 的product.IsValid()
值为false
。另一方面,我的同事希望我们简单地写:
他对他说这更有意义,他可以更容易地阅读。
到目前为止,我们唯一能达成共识的是,当前者的测试失败时,你可能会得到更有帮助的输出,但我认为必须有更好的解释。我查找了一些关于语法助手的信息(http://nunit.com/blogs/?p=44),它们是有道理的,但除了它们“感觉”正确之外,我并不完全理解约束的概念.
我想知道是否有人可以解释为什么我们使用约束的概念,以及为什么他们改进了上面的单元测试示例?
谢谢。
database-design - “惩罚”开发者还是自动修复它?触发器与约束
假设我有一个应始终为大写的数据库列。
这里有几个想法:
1)创建一个列约束:col = UPPER(col)
2)创建一个插入/更新行触发器之前设置:col = UPPER(col)
通常对数据库数据的约束越多越好,而触发器可能是神秘而糟糕的。假设编写代码的开发人员在同一个组织中,因此他们编写的代码可以由我们修改。
你会使用哪种方法,为什么?
它必须是大写的,因为有问题的数据实际上总是大写的(它最初是由各种第三方以这种方式打印的)。对于此特定字段,大写与小写没有任何意义。
c# - “其中 T : somevalue”是什么意思?
是什么where T : somevalue
意思?我刚刚看到一些代码说where T : Attribute
。我认为这与泛型有关,但我不确定这意味着什么或它在做什么。
有人知道吗?
sql - 如何创建表约束以防止两列中的重复值?
我有下表:
表中的部分数据如下所示:
如果已经存在 IsActive = 1 的 EntityIdNmb 记录,我想添加一个约束以确保没有人添加或更新记录以使 IsActive = 1。
我该怎么做呢?
database - 在 NHibernate 中处理来自数据库的约束冲突
我有一个我认为是 NHibernate 相当常见的用例。我创建了一个实体并尝试使用 ISession.Save() 和 Transaction.Commit() 来保存它。在这一点上,我希望违反唯一/主键约束之类的事情会作为例外出现在我面前。然而,我看到的只是一个 GenericADOException。这并不能帮助我区分真正的数据库故障与要求用户为实体选择另一个名称以保持唯一性之类的事情。
目前,我已经实现了首先查询的丑陋解决方法,以确保不会违反约束。这只是一个等待发生的竞争条件,我真的不希望用户看到“糟糕,数据库做了一些有趣的事情!也许你应该再试一次。” 种消息。
有没有一种优雅的方法来解决这个问题?
sql - SQL 约束问题
在 Sql Server 2005 中,我有一个包含两个整数列的表,分别称为 Id1 和 Id2。我需要它们在表中是唯一的(使用跨越两列的唯一索引很容易)。如果值在两列之间转置,我还需要它们在表中是唯一的。
例如,SELECT * FROM MyTable 返回
如何创建一个约束以防止最后一行输入到表中,因为它们是第一行的转置值?
sql-server - 小写约束 - Sql Server
我不确定这是否应该是一个约束,但我希望表的“用户名”列忽略执行插入或更新时设置的值,而是存储“显示用户名”列的值转换为小写。如果“DisplayUserName”被更改,“UserName”也应该被更新为“DisplayUserName”被降低。
谢谢!
constraints - 在数据库中强制执行表间约束的最佳方法
我正在寻找检查表间约束的最佳方法,这是外键向前迈出的一步。例如,检查日期子记录值是否在两个父行列的范围日期之间。例如:
我看到两种方法:
- 如本文(或其他 RDBMS 上的其他等效项)所示,在提交时创建物化视图。
- 使用存储过程和触发器。
还有其他方法吗?哪个是最好的选择?
更新:这个问题的动机不是“对数据库或应用程序施加约束”。我认为这是一个令人厌烦的问题,任何人都按照她喜欢的方式行事。而且,对于批评者,我很抱歉,我正在开发对数据库的限制。从这里开始,问题是“哪个是管理数据库表间约束的最佳选择?”。我在问题标题上添加了“内部数据库”。
更新 2:有人添加了“ oracle ”标签。当然物化视图是 oracle 工具,但我对任何选项都感兴趣,无论它是在 oracle 还是其他 RDBMS 上。
oracle - 如何约束多个列以防止重复,但忽略空值?
这是我在 Oracle 数据库 (10g) 中运行的一个小实验。除了(Oracle 的)实现方便之外,我无法弄清楚为什么一些插入被接受而另一些被拒绝。
假设偶尔有一些列值未知的行是有意义的,我可以想到两个可能的涉及防止重复的用例:
1. 我想拒绝重复,但在任何受约束的列的值未知时接受。
2. 我想拒绝重复,即使在约束列的值未知的情况下。
显然,Oracle 实现了一些不同的东西:
3. 拒绝重复,但(仅)在所有受约束的列值都未知时接受。
我可以想办法利用 Oracle 的实现来处理用例 (2)——例如,为“未知”设置一个特殊值,并使列不可为空。但我不知道如何使用用例(1)。
换句话说,我怎样才能让 Oracle 这样做呢?