问题标签 [check-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 投票
2 回答
4219 浏览

sql-server - SQL Server - 值来自另一个表的列上的 CHECK 约束

如何在没有硬编码的情况下对列施加 CHECK 约束,使其可接受值的范围来自另一个表?

这是一个简化的示例:

我想在 OneManyTable.TaskID 列上放置一个 CHECK 约束,以便可接受的值来自另一个表的列,即来自 MetadataTable.Value where MetadataTable.class='A'

我已经尝试创建格式的 CHECK 约束

但这不受支持。

另一方面, ('Val1', 'Val2') 中的 TaskID 在 SQL2k8 中用作检查约束(不在 SQL2000 中!),但由于硬编码,它是不可接受的。

如何实现我想要的,无论是通过 CHECK 约束还是我不知道的其他一些花哨的机制?

PS。必须在数据库端,没有人向我建议的客户端检查。

0 投票
5 回答
21098 浏览

sql - SQL 我可以对表有“条件唯一”约束吗?

在我的职业生涯中,我曾多次遇到过这个问题,但我当地的同龄人似乎都无法回答这个问题。假设我有一个表,其中有一个“描述”字段,它是一个候选键,除了有时用户会在过程中途停止。因此,对于可能 25% 的记录,此值为空,但对于所有非空的,它必须是唯一的。

另一个示例可能是必须维护记录的多个“版本”的表,并且位值指示哪个是“活动”的。因此“候选密钥”总是被填充,但可能存在三个相同的版本(有效位中的 0)和只有一个有效的版本(有效位中的 1)。

我有解决这些问题的替代方法(在第一种情况下,在存储过程或业务层中强制执行规则代码,在第二种情况下,使用触发器填充存档表并在需要历史记录时对表进行 UNION) . 我不想要替代品(除非有明显更好的解决方案),我只是想知道是否有任何风格的 SQL 可以以这种方式表达“条件唯一性”。我正在使用 MS SQL,所以如果有办法做到这一点,那就太好了。我主要只是在学术上对这个问题感兴趣。

0 投票
6 回答
4528 浏览

sql-server-2008 - 检查约束以验证 IP 地址字段

我正在从事一个涉及 C# 和 SQL Server 2008 数据库的项目。在其中一张表中,我有一个nvarchar(15)包含 IP 地址的字段 ( )。

我想添加一个检查约束,它将验证输入值实际上是一个 IP 地址。

我想使用正则表达式来做到这一点,但默认情况下似乎不支持此功能。我看到了关于在里面写一个带有 UDF 的 customm dll 的事情(MSDN 教程),但我真的不明白它是如何工作的(即我应该将 dll 放在哪里?)

有没有一种“简单”的方法来添加这样的约束?欢迎任何解决方案。

提前致谢 !

0 投票
2 回答
2634 浏览

mysql - MySQL 是否支持检查约束?

MySQL 是否支持检查约束?

我能够在 MySQL 中执行以下脚本而不会出错。

但如果我查询它不会反映:

0 投票
5 回答
11179 浏览

sql - 我如何有一个引用另一个表的检查约束?

我在 SQL Server 2008 数据库中有以下表:

  • tblItem,它有一个ItemID字段;

  • tblGoodItem,它也有一个 ItemID 字段,并且有一个指向 tblItem 的外键;

  • tblBadItem,它也有一个 ItemID 字段,还有一个指向 tblItem 的外键。

一个项目不能既是好项目又是坏项目;它必须是一个或另一个。但是,无论物品是好是坏,它都必须是一个物品。

我的问题是:如何在 tblGoodItem 和 tblBadItem 的 ItemID 字段中添加约束,以便两个表中都不能存在 ItemID 值

我已经阅读了 Stack Overflow 中关于类似问题的一些回复,我正在考虑这个解决方案:

  • 创建一个视图vwItem,它在 ItemID 上连接 tblGoodItem 上的 tblBadItem。

  • 编写一个 UDF fnItem,它对 vwItem 进行查询以查看视图中存在多少条记录。

  • 有一个调用 fnItem 并验证返回值是否为 0 的约束。

这是最好的主意吗?有没有人有更好的主意?

0 投票
2 回答
371 浏览

sql - SQL 数据库中的约束

我需要在 T-SQL 中有一个表,它将具有以下结构

没有行,或者最多一行可以有值为 T 的 Flag 列。我的开发人员声称这可以通过放置在 table 上的检查约束来实现。

问题:

  1. 是否可以在数据库级别将此类约束放置在数据库本身(即行间约束)上,而不是在用于更新或插入行的业务规则中
  2. 这样的表格是正常形式的吗?
  3. 或者正常形式需要删除标志列,而是(比如说)有另一个简单的表或变量,其中包含标志=T的行的值,即在上述情况下行=3。
0 投票
1 回答
1781 浏览

sql - 在删除之前检查 SQL 中的完整性约束违规

我的问题有点类似于这个

我想检查 DELETE 查询是否会因为违反约束而失败。我想在数据库级别执行此操作,因为我认为让它失败并捕获错误是丑陋的。

另一种选择是使用 SELECT 查询“手动”检查它以查看是否存在约束,但这相当乏味,恕我直言。

有没有“本地”的方式来做到这一点?

0 投票
1 回答
403 浏览

sql - 请解释 SQLServer 用于创建检查约束的语法

当我右键单击默认约束并要求 SQL Server 为其创建 CREATE 脚本时,它会生成以下代码:

作为记录,我理解第一个 ALTER 语句,但我不明白第二个 alter 语句的作用。试图用谷歌搜索“CHECK CONSTRAINT”短语,但只找到了添加约束语法。

谢谢。

赛斯

更新
感谢乔的回答。找到这个有帮助的链接。

http://blog.sqlauthority.com/2009/11/12/sql-server-disable-check-constraint-enable-check-constraint/

我不知道您可以启用和禁用约束。凉爽的!

赛斯

0 投票
1 回答
6061 浏览

oracle - 在 APEX 中添加电子邮件检查约束

我对 Oracle 很陌生,对 APEX 也很陌生。我正在尝试在表上添加约束以验证电子邮件:

现在,如果我是对的,这将在 a 内正常工作,CONSTRAINT <name> CHECK(REGEXP_LIKE(...))但是当我尝试保存它时会出现此(令人困惑的)错误:

ORA-00920: 无效的关系运算符

我认为这是因为生成的查询包含"CALLER_EMAIL"

有任何想法吗?

0 投票
1 回答
28975 浏览

sql - 如何在 SQL Server 中的 VARCHAR 列上创建 CHECK 约束,指定最小数据长度?

VARCHAR(30)在 Microsoft SQL Server 数据库中有一个列。我想添加一个不允许列中的值小于 3 个字符的 CHECK 约束。我必须使用什么表达方式?