问题标签 [check-constraint]

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 投票
1 回答
110 浏览

sql - SQL 扩展检查约束

是否有可能有一个复杂的检查约束?

例如,我有一个客户表,其中的每条记录都分配了一个客户类型。

因此我可以有几个相同类型的客户。

我想将每种类型的一个客户设置为该类型的“主要”帐户,但是每种类型只有一个客户可以是主要的。

是否可以在 IsPrimary 字段上添加检查约束,检查相同类型的所有客户以查看是否已经有一个标记为主要客户?

我显然可以在 C# 代码中执行此操作,但我希望将此作为额外检查。

我也可以使用触发器,但我想坚持约束,以便我可以以相同的方式处理所有错误。

谢谢

0 投票
2 回答
652 浏览

c# - Sql 检查约束?

我正在使用 SQL Server 作为数据库开发 C# 应用程序,这是一个非常简单的问题,直到现在我才发现。我在我的QUANTITY列上创建了一个检查约束,如下所示:

数量是从 C# 更新的,我不希望数量小于零,但是当我的数量为 2 并且我减去 2 时,它应该允许零作为数量但不小于 0,但它会引发以下异常:

UPDATE 语句与 CHECK 约束 \"CK_ITEM_DETAILS_QUANTITY\" 冲突。数据库 \"MyDatabase\"、表 \"dbo.ITEM_DETAILS\"、列 'QUANTITY' 中发生冲突。\r\n 语句已终止。

知道我做错了什么吗?

0 投票
2 回答
158 浏览

sql - Oracle 约束:混合唯一约束和检查约束

我面临以下问题:我想创建一个独特的和检查约束的组合。

它可能比数据库的责任更多的是业务逻辑,但仍然如此。

我有一个具有以下结构的表:

设计本身可能是错误的,这只是一个例子。

我想以这种方式进行约束:

换句话说:只要期间不相交,就可以拥有两个具有相同 CUST_ID 和 CONTRACT_TYPE 的保险。

这种问题有什么解决办法吗?

感谢您的任何提示!

干杯 muellae

0 投票
0 回答
56 浏览

sql - 检查 DB2 中概率分布的约束

我在 DB2 中有一个包含概率分布的 VARCHAR 列的表,例如“0.3、0.1、0.3、0.2、0.1”。

我想知道是否可以为此列创建一个检查约束,以检查概率的总和是否确实为 1。

我已经阅读了 DB2 文档和几个教程,但找不到与此问题相关的任何内容。

0 投票
2 回答
1662 浏览

sql - 表检查约束允许无效数据

当我使用下面的测试脚本创建检查约束时,仍然允许违反约束的数据进入表,并且约束仍然显示为受信任。

我意识到检查约束没有正确检查 NULL(它包括column = null而不是column IS null),但我仍然希望 SQL Server 不允许“ASDF”、“3”或 NULL 值,因为检查条件评估为 false反对这些价值观。有人可以解释为什么这个检查约束允许以下值:NULL、'3'、'ASDF'?

如果我将约束条件更改为(checkMe is null or checkMe = '1' or checkMe = '2'),则它按预期工作。

SQL Server 版本:Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)

向表中插入数据

添加约束,检查以便检查现有数据。我希望 NULL 和 '3' 都违反了这个检查,但它以某种方式成功了。

添加检查约束后尝试插入无效数据...成功了吗?

显示表包含无效数据,并且此约束被标记为受信任,这意味着表中的所有数据都已针对约束进行了验证

脚本输出:

输出截图

0 投票
3 回答
10619 浏览

sql - 检查约束 - 检查密码包含至少一个数字/特殊字符/大写

我希望为我的 SQL Server 数据库创建三个单独的检查约束,以确保密码字段至少约束一个数字、一个大写字符和一个特殊字符。

我认为最好的方法是创建单独的检查约束,例如我创建了以下约束以确保密码长度至少为 8

(len([password]) <= (8))

任何人都可以提出一种方法来建立所需的验证。

谢谢

0 投票
1 回答
1183 浏览

sql - Microsoft SQL Server - 使用存储过程时检查约束错误 (msg 547)

我不断收到以下错误:

消息 547,级别 16,状态 0,过程 add_new_customer,第 6 行
INSERT 语句与 CHECK 约束“CK__customer__addres__09A971A2”冲突。冲突发生在数据库“AIT 732 - 银行”、表“dbo.customer”、列“address_state”中。

以下是我尝试更新的表格:

这是我创建的存储过程:

最后但并非最不重要的是,这就是我调用程序的方式

我已经搞砸了大约一个小时,无法弄清楚这个错误来自哪里。任何帮助,将不胜感激。

0 投票
1 回答
233 浏览

sql - SQL : 列检查约束不能引用其他列。(针对不同的表)

我有两张桌子:
T1(A,B)哪里
create table T1( A char(2) NOT NULL primary key check(T1.A not in T2.B), B char(2) unique );

T2(C,B) 在哪里
create table T2( C number(2) primary key, B char(2) unique references T1 check(T1.B not in T1.A) );

在这里,T2.B参考T1.A

我的问题是,我怎样才能将检查约束设置为允许的值与允许的T1.A值不同?T1.BT1.AT2.B

0 投票
1 回答
20436 浏览

sql - 如何在 PL/SQL 中捕获约束冲突?

我用约束创建了上表。现在我想通过在异常中捕获它们来测试 PL/SQL 过程中的这些约束。但我很困惑如何去做。

0 投票
1 回答
29 浏览

sql-server - 我在这个 SQL 检查约束中有什么逻辑错误?

昨晚我花了几个小时试图找出下面的检查约束有什么问题。我想执行以下规则:

  • 要么所有行都为空
  • 或者 Col1 不为空且其他列中只有一列不为空(如果设置了 col4,则应设置为 true)

我能够插入仅设置 Col1 的行,但我希望抛出一个错误。