问题标签 [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 回答
1710 浏览

oracle - 在 Check 中使用 where 子句

我有一种情况,当另一个字段是某些值时,一个字段可以为 NULL,而对于其他字段,它应该为 NOT NULL。

我做了两个约束,第一个确保只能输入“类型”中的某些值。

另一个约束(给出错误,缺少右括号)应确保当“类型”是某些类型时 BestandLocate 不为空:

当我搜索 Where 子句时,我只在 select 语句中找到了它的示例。这是否意味着我不能在这里使用它,是否有其他方法可以做到这一点,或者我必须在最终应用程序中检查它还是只能在 PLSQL 中完成?

0 投票
1 回答
3642 浏览

sql-server - SQL Server 2012:在 CHECK 约束中调用用户定义的函数

我编写了一个返回的函数,int 但我不能在 CHECK 约束中使用它,输出此错误:

'myFunction' 不是可识别的内置函数名称。

我也试过

我看到人们写到不可能在 CHECK 约束中调用用户定义的函数,但这里写的是它是可能的:

CHECK 约束 如果参数值仅在表或常量中传递给函数引用列,则可以在 CHECK 约束中调用返回标量值的用户定义函数。每次查询处理器检查约束时,查询处理器都会使用与正在检查的当前行关联的参数值调用该函数。表的所​​有者还必须是由表上的 CHECK 约束调用的用户定义函数的所有者。
0 投票
0 回答
570 浏览

sql-server - SQL Server 多个外键 - 仅允许并限制设置 1 个外键

我有以下 SQL 表:

此表存储上传的文档。可以为各种实体上传文件:

  1. 用户
  2. 组织
  3. 客户
  4. 联系人
  5. 交易

这个表存储那些上传的文档并将其链接到相关实体。它的结构允许我稍后通过向 Document 表添加外键来添加将文档上传到其他表的功能。

我将所有外键设为“稀疏”列以节省空间,因为这些列中只有 1 个具有值。

重要规则:必须准确链接到 1 个表。不能链接到没有表,不能链接到超过 1 个表。

如何在数据库级别确保这一点。我正在考虑使用检查约束——但它的语法可能会变得复杂(如果我们为 20 个不同的表上传文档会怎样)。

有人可以推荐一个解决方案吗?

0 投票
3 回答
2894 浏览

sql-server - 在 SQL Server 中检查具有格式的字符串的约束

我有一个定义如下的表:

我执行代码并且它可以工作,但是当我将数据插入其中时

insert into HLV values ('HLV0001',GETDATE(), 10,5,6)

我得到了错误

列名或提供的值的数量与表定义不匹配。

是因为支票错了吗?

0 投票
1 回答
2282 浏览

sql - 密码检查约束 SQL server

我正在尝试创建一个必须包含的密码约束:

- 至少 1 个大写

- 至少 1 个号码

- 至少 5 个字符长

我已经搜索了很多,但我无法让它工作

例如,我试过这个

现在,如果密码包含数字,它将接受它,但当密码根本不包含大写字母或仅包含大写字母时,它也会接受它,这让我感到困惑,我尝试了很多组合

这也不起作用,我尝试了许多来自stackoverflow的代码片段,人们已将其标记为已回答,这让我想知道,这是我的问题还是我做错了什么?我现在很困惑

不应该允许密码:“wefwefew123”对吗?嗯,确实如此。但它不接受“wefwefew”,所以它确实适用于 0-9,AZ 有什么问题?

这可能是一个愚蠢的错误,之后我可能会感到愚蠢,但我无法自己解决它,请记住我不是专业人士;)

0 投票
2 回答
914 浏览

sql - oracle中如何添加检查约束

我有一张桌子,

我想在电话上添加约束检查。例子。电话是08175210868

我只想输入 +628175210868

对不起我的英语不好。

0 投票
1 回答
35 浏览

sql - 避免在从两个表中获取唯一行的位置插入重复行

我有两个表,例如 customer_name 和 customer_phone,但唯一的客户是从两个表中的所有四列的组合中识别出来的。

由于我们有多个源系统同时插入到下表中,在所有这些工作中,我们在插入之前使用一个函数来验证客户是否已经存在,使用 (f_name,l_name,area_code,phone_num) 这个组合。然而,我们仍然看到重复插入,因为验证发生在其他作业已经插入但尚未提交时。有没有避免重复的解决方案?

顾客姓名

列:ID、名字、姓氏

cutomer_phone

col: ID,area_code, Phone_number

0 投票
2 回答
74 浏览

sql - SQL 我不想在同一个表中有像 alfred 或 Alfred 或 alfr 这样的名字

这是我试图做的,但它不起作用:

0 投票
2 回答
269 浏览

sql-server - 我可以重命名 SQL Server 2014 中表类型的检查约束吗?

通过 SQL Server 2014,CREATE TYPE ... TABLE不支持命名检查约束。

这反过来会导致带有神秘名称(例如CK__TT_Income__Incom__72BBEAA9)的检查约束。

此类约束一直存在sys.check_constraints,但我无法使用 重命名其中一个sp_rename

所有重命名与表类型关联的约束的尝试都会导致以下错误消息:

消息 15248,级别 11,状态 1,过程 sp_rename,第 424
行参数 @objname 不明确或声明的 @objtype(对象)错误。

这是我的表格类型:

“最正确”的尝试位于以下列表的首位:

接下来试试table类型的内部形式

最后试试table类型的“user”形式

底线,有没有办法重命名与用户定义的表类型关联的检查约束?

0 投票
3 回答
63 浏览

oracle - Oracle:函数参数 - 如何实现?

我有一个小问题,我想请你帮忙 :)

所以为了简单起见,我使用了一个 oracle 数据库,我想在我的一个表上创建一个“检查约束”,即下面。

表 XY

属性 A || 属性 B || 属性 C

对于属性 A 和 B,用户可以添加他想要的任何内容 - 对于属性 C,我想使用用户定义的函数使用“检查约束” - 检查 A 和 B 的组合是否有效。

我的问题是,我不知道如何实现函数的输入参数,所以我可以在用户在数据库中创建条目时进行检查。

换句话说,用户已经向 A 添加了 1,B 添加了 3,一旦他想为 C 添加一个条目,我想(例如)检查A + B = 4

我希望你能帮助我,因为我现在要去香蕉x)

亲切的问候亚历克斯

编辑(从下面的评论中复制)

我有 3 张桌子:

  1. 团体
  2. GROUP_LIST
  3. TM值

GROUP包括 a 的 ID GROUPGROUP_LIST是 theGROUP和 the之间的连接表TM- 所以在GROUP_LIST我将 aGROUP与 TM 连接 - 但可以将 1GROUP与多个TMfe 连接:

依此类推,我的真正问题如下:现在,我想要检查 TM 属性,该属性检查我尝试填写的 TM 是否已经存在于同一个 GROUPID 中。我希望现在清楚我的意图是什么......