问题标签 [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.

0 投票
4 回答
262 浏览

sql - 防止在 SQL 中插入重复信息

有没有一种快速的方法来防止重复数据插入到表中?我的意思是,密钥总是不同的,但条目的其余部分可以重复,因此,将有 2+ 个不同的密钥标识相同的数据。

我可以搜索整张桌子,但我担心这样做会失去性能。

注意:我刚刚开始学习 SQL,如果这对您来说是一个愚蠢的问题,请多多包涵。

0 投票
2 回答
2183 浏览

design-patterns - 从 SQL 中的 LIKE 约束返回的列值之间的匹配

我正在尝试匹配返回的列值,但值是作为模式匹配的结果返回的:

如您所见,我正在尝试检索一些列值,但 java derby 工具说:

错误 42884:未找到具有兼容参数的“FUNCTION”类型的名为“LIKE”的授权例程。

我该怎么办?

0 投票
2 回答
244 浏览

c# - 要求在 C# 中存在静态方法

给定一组具有一组通用属性和方法以支持给定域逻辑的对象,是否有一种方法可以强制在这些对象上存在某些静态方法?

我得出的结论是,实现接口并不能实现这一点(方法只是实例),并且不能将静态方法标记为覆盖、虚拟或抽象。

提前致谢。

0 投票
3 回答
1704 浏览

sql-server - 在 SQL 2005 中删除集群主键时会发生什么

我有一个 PK 约束——两列上的聚集索引——我正在删除它。一个小时后该命令仍在运行。我会认为,因为我只是删除一个约束,所以操作几乎是瞬时的。当我放弃 PK 时,有人可以向我解释一下引擎盖下到底发生了什么吗?

0 投票
1 回答
2750 浏览

mysql - MySQL 和检查约束

我继承了一个使用 MySQL 并由 PHP 前端使用的应用程序。编写这个系统的人花了一些相当复杂的长度来确保用户输入的代码是有效的——这意味着这些代码也存在于另一个表中。

当我第一次看到这个时,我想知道为什么他没有使用 CHECK 约束并让 dbms 解决这个问题 - 我看到大量不同的程序实现相同的检查,而不仅仅是 dbms 中的一个地方。然后我发现 MySQL 不支持 Check 约束(严格来说不是这样——它支持语法但只是忽略它)。

有没有办法可以在 MySQL 中实现检查约束?

任何提示、建议等都会很棒。

0 投票
1 回答
1573 浏览

django - 带有“忽略大小写”的唯一约束

如何为 Django 模型指定自定义约束?

像那样

0 投票
1 回答
4476 浏览

c# - 对 ValueTypes、Strings 和 Nullable 的 ValueTypes 的通用约束

我正在尝试向通用方法添加一个约束,以便它检查 ValueTypes、Strings 或 Nullable 值类型。

问题是:

  • 值类型是struts
  • 字符串是不可变的引用类型
  • nullable 是值类型,但不会在“where S : struct”类型约束中被接受。

那么有人知道我是否可以在通用约束中接受这些类型并且只接受这些类型?

问题是我试图接受一个Expression<Func<T, S>参数,该参数将代表给定对象的这些类型的属性。

该功能将类似于以下内容(注意代码没有任何意义,只是快速了解我正在寻找的东西):

上面的三个调用都应该被接受,但不是下面的:

提前致谢

更新:感谢安东和马克。MyGenericMethod 有 4 个不同的签名接受额外的参数,这就是为什么我不喜欢为现有的 4 个创建 3 个不同的(结构、可空、字符串)的想法......这将是一场噩梦!

0 投票
5 回答
347745 浏览

sql - 暂时关闭约束 (MS SQL)

我正在寻找一种方法来暂时关闭所有数据库的约束(例如表关系)。

我需要将一个数据库的表复制(使用插入)到另一个数据库。我知道我可以通过以正确的顺序执行命令来实现这一点(不破坏关系)。

但是如果我可以暂时关闭检查约束并在操作完成后重新打开它会更容易。

这可能吗?

0 投票
2 回答
1619 浏览

sql-server - 使用 SQL CLR 集成实现检查约束

我正在实现“检查”约束,它只是为每个受约束的列调用一个 CLR 函数。

每个 CLR 函数都是一两行代码,它们尝试构造与该列关联的用户定义 C# 数据类的实例。例如,“Score”类有一个构造函数,它在构造失败时(即,当分数超出有效范围时)抛出有意义的错误消息。

首先,您如何看待这种方法? 对我来说,它将我的数据类型集中在 C# 中,使它们在我的应用程序中可用,同时还在数据库中强制执行相同的约束,因此它可以防止非程序员可能尝试在管理工作室中进行无效的手动编辑。到目前为止它运行良好,尽管更新程序集会导致约束被禁用,需要重新检查所有约束(这是完全合理的)。我DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS用来确保所有表中的数据对于启用和禁用约束仍然有效,并根据需要进行更正,直到没有错误为止。然后我通过 重新启用所有表的约束ALTER TABLE [tablename] WITH CHECK CHECK CONSTRAINT ALL是否有一个 T-SQL 语句可以重新启用检查所有表上的所有检查约束,还是我必须逐个表重新启用它们?

最后,对于检查约束中使用的 CLR 函数,我可以:

  1. 在每个函数中包含一个 try/catch 以捕获数据构造错误,错误时返回 false,成功时返回 true,这样 CLR 就不会在数据库引擎中引发错误,或者...
  2. 省略 try/catch,只需构造实例并返回 true,从而允许在数据库引擎中引发上述“有意义的”错误消息。

我更喜欢 2,因为我的函数更简单,没有错误代码,并且当使用管理工作室的人进行无效的列编辑时,他们会从 CLR 获得有意义的消息,"Value for type X didn't match regular expression '^p[1-9]\d?$'"而不是像“违反约束”这样的通用 SQL 错误。 允许 CLR 错误通过 SQL Server 是否有任何严重的负面后果,或者它是否就像任何其他因违反约束而导致的插入/更新失败一样?

0 投票
4 回答
1737 浏览

ruby - 检测重复事件中的冲突

我正在编写一个日历应用程序,它需要检查重复条目之间的冲突。每个Entry 对象都有一个recurrences() 方法,该方法返回一个范围数组——每个范围包含每个未来事件的开始和结束时间。

我需要检查新条目和现有条目之间的冲突。我通过检查新条目的未来出现与现有条目的未来出现没有冲突来做到这一点:

resumes() 默认返回开始时间和开始时间 + 1 年之间的所有事件

问题是这种方法效率不高。仅比较两个条目,每个条目在 1 年内每天重复一次,导致 365 * 365 次比较(在我的机器上需要 4 秒以上)。可能有任意数量的现有条目可以与新条目进行比较,因此我现在拥有的方法是无用的。

我没有计算机科学或数学背景,但我一直在阅读各种关于算法的教科书,但我一直无法找到优化方法的方法。还有其他人有什么想法吗?

谢谢

戴夫