Sql 将基于元组的检查添加到此关系

Sql 将基于元组的检查添加到此关系,sql,database,check-constraints,Sql,Database,Check Constraints,在RelationPerson(SSN、State、Name)中,添加基于元组的检查:如果 此人的状态为NY,则其SSN的前三位数字必须为 在'050'和'134'之间。(提示:在SQL中使用左函数) 我对这里的检查条件不满意。我不确定这是否是做条件检查的正确方法。有人能核实一下吗?如果没有,我们如何进行条件检查 我们需要: if state == 'NY', perform CHECK 我们需要扳机吗?我在想,如果发生新的插入/更新,请检查该值。但问题不是这样的。好吧,它是通用的,但DDL通

在RelationPerson(SSN、State、Name)中,添加基于元组的检查:如果 此人的状态为NY,则其SSN的前三位数字必须为 在'050'和'134'之间。(提示:在SQL中使用左函数)

我对这里的检查条件不满意。我不确定这是否是做条件检查的正确方法。有人能核实一下吗?如果没有,我们如何进行条件检查

我们需要:

if state == 'NY', perform CHECK

我们需要扳机吗?我在想,如果发生新的插入/更新,请检查该值。但问题不是这样的。

好吧,它是通用的,但DDL通常不是,但无论如何,让我们使用doc作为指南

可以使用任何逻辑(布尔)值创建检查约束 基于逻辑运算符返回TRUE或FALSE的表达式。 对于上一个示例,逻辑表达式为:
薪资>=15000,薪资为“050”

  • SSN的左三位数字是@Conrad Frix,这只是SQL语句。非平台特定。这是一门入门课程。谢谢所以我认为任何一般的SQL语句都是有效的。谢谢你的提示。我很难接受这样一个事实,即只有当state=NY时才执行检查,然后我们对数字进行检查。我该怎么做?如果这三个都是fasle,则检查将为false,并拒绝修改。我想这不是问题想要的。我想我可以用
    之间检查数字?啊。我倾向于把事情复杂化。谢谢康拉德!你说得对(谢谢。你以前给了我一个很大的暗示。
    if state == 'NY', perform CHECK
    
    (Group of logical expressions) OR (Group of logical expressions)