定义复杂水平过滤器

数据库和用户管理方面的一些复杂情况要求在个别用户的行子集字段中定义复杂的 SQL WHERE 子句,以便对一个组或用户可以查看的行进行限制。在定义过滤器时,您可能想引用镜像数据库中的表,对组或用户使用参数,或使用这些方法的组合。有关创建简单水平过滤器的基本步骤,请参阅在预订级别过滤数据

DB2 Everyplace Sync Server 提供了标准 SQL WHERE 实现的一个子集来与过滤器配合使用。有关子集的语法,请参阅过滤器的语法

以下示例演示如何引用镜像数据库中的其它表以及对水平过滤使用参数。

假定您管理两个分别名为 Ziptab 和 Business 的表,它们都位于镜像数据库中。Ziptab 包含特定城市的邮政编码(请参阅表 208),而 Business 跟踪一些公司和它们的邮政编码(请参阅表 209)。您想要让 San Jose, California 的用户只查看他们所在城市的商业公司。您已创建一个组并将这些用户指定给了该组。


表 208. Ziptab 表

City Zipcode
San Jose 95141
San Jose 95123
Los Angeles 93002

表 209. Business 表

Business Zip
IBM 95141
我的公司 95123
您的公司 93002
另一公司 94888

您将在“行”页的个别用户的行子集字段中输入以下子句:

(Zip) IN (SELECT Zipcode FROM Ziptab WHERE City = ':fcity')
:fcity 是 City 列值的参数,对于该组,设置为 San Jose

然后,完成并关闭“创建预订”笔记本。结果是,在同步之后,这些用户在他们的设备上只看到 Business 表中的下列各行:

表 210. 用户在他们的设备上将会看到的行

Business Zip
IBM 95141
我的公司 95123

相关任务

相关参考