Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在数据库表中定义条件逻辑_Sql_Sql Server - Fatal编程技术网

Sql 在数据库表中定义条件逻辑

Sql 在数据库表中定义条件逻辑,sql,sql-server,Sql,Sql Server,我有一个ClientLookupTable和一个LookupTable,如下所示 ClientLookupTable指定客户端需要哪些查找项。 这很容易做到,因为我可以打开和关闭isRequired标志。 但是,我需要做的是要求LookupTableId19或者同时要求6和20。 我不知道如何着手为这个需求设计数据库表 ClientLookupTable中的数据将被另一个客户端应用程序使用。但是我们需要定义,对于一个特定的客户机(3),他们需要的是WID(19)或SSN或DOB 您可以向表中添

我有一个
ClientLookupTable
和一个
LookupTable
,如下所示

ClientLookupTable
指定客户端需要哪些查找项。 这很容易做到,因为我可以打开和关闭
isRequired
标志。 但是,我需要做的是要求
LookupTableId
19或者同时要求6和20。 我不知道如何着手为这个需求设计数据库表

ClientLookupTable
中的数据将被另一个客户端应用程序使用。但是我们需要定义,对于一个特定的客户机(3),他们需要的是WID(19)或SSN或DOB

您可以向表中添加触发器或检查约束。这将保证数据满足其中一个条件。对于约束,您需要定义一个用户定义的函数

但是,我强烈不建议这样做。多行约束的问题是不能向表中添加一行。它不会满足约束条件。这会使插入新行和更新现有行变得困难

一种可能是以支柱为轴心:

id    clientId    needs_wid    needs_ssn    needsdob
139      3            1            0            0
然后,一个简单的
检查
约束起作用:

add constraint chk_ClientLookupTable_required
    check ( (needs_wid = 1) or (needs_ssn = 1 and needsdob = 1) )

我确信您将数据放在不同的行中以获得灵活性。不幸的是,这失去了灵活性。您可以用JSON或XML替换这些列,以重新建立灵活性。

没有足够的信息说明您想要做什么。请解释更多细节和预期结果,并以代码而非图像的形式提供示例数据。能否在
ClientLookupTable
中添加一个新列,指定不同的选项及其优先级。可能是一个名为
options
的整数列,因此
19
将是
1
,然后
6
20
将是
2
@LuisCazares,我添加了其他信息。但基本上我只需要能够在数据库表中定义客户机是否需要提供所有3个或其中的1个。我不确定这在数据库级别是否可行。在表级别,这称为约束。但是,由于您希望将它们“打开”和“关闭”,因此最好在
insert
update
语句中处理这些问题。@jnevil,这听起来似乎可行。我会试试看,看看效果如何。谢谢