要创建一个只包含表中某些行的发布,必须编写一个仅与要发布的行匹配的搜索条件。请在搜索条件中使用以下子句之一:
SUBSCRIBE BY 子句 当发布的多个预订者接收表中的不同行时,则使用 SUBSCRIBE BY 子句。
建议在 SQL Remote 系统需要大量预订时使用 SUBSCRIBE BY 子句。SUBSCRIBE BY 子句允许将多个预订与单个发布关联,而 WHERE 子句则不能。预订者将根据所提供表达式的值来接收行。
使用 SUBSCRIBE BY 子句的发布更加紧凑,更易于理解,并且与维护若干个 WHERE 子句发布相比,具有更优越的性能。
WHERE 子句 使用 WHERE 子句在某个项目中加入行子集。包含此项目的发布的所有预订者都将收到满足 WHERE 子句的行。
所有未发布的行都必须具有缺省值。否则,当远程数据库尝试从统一数据库中插入新行时,将发生错误。
可将 WHERE 子句合并到项目中。
数据库服务器必须将信息添加到事务日志,然后扫描事务日志以便发送消息,发送的消息数与发布的数目成正比。WHERE 子句不允许将多个预订与单个发布关联,而 SUBSCRIBE BY 子句则可以。
您需要一个使每个销售代表执行以下任务的发布:
预订他们的销售订单。
在本地更新他们的销售订单。
将他们的销售数据复制到统一数据库。
如果使用 WHERE 子句,则需要为每个销售代表创建单独的发布。下面的发布是为名为 Sam Singer 的销售代表创建的;其他每个销售代表需要的发布与之类似。
CREATE PUBLICATION PubOrdersSamSinger ( TABLE SalesOrders WHERE Active = 1 ); |
以下语句将使 Sam Singer 预订 PubsOrdersSamSinger 发布。
CREATE SUBSCRIPTION TO PubOrdersSamSinger FOR Sam_Singer; |
如果使用 SUBSCRIBE BY 子句,则只需要创建一个发布。所有销售代表都可以使用下面的发布:
CREATE PUBLICATION PubOrders ( TABLE SalesOrders SUBSCRIBE BY SalesRepresentativeID ); |
以下语句将使 Sam Singer 以其 ID 号 8887 预订 PubsOrders 发布。
CREATE SUBSCRIPTION TO PubOrders ('8887') FOR Sam_Singer; |
使用 SUBSCRIBE BY 子句只发布某些行
使用 WHERE 子句只发布某些行
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |