数据脚本,用于为 MobiLink 服务器提供一个在上载处理过程中使用的事件,该事件用于处理在远程数据库更新的行。
在 SQL 脚本中,可以按名称或使用问号指定事件参数。不建议使用问号,建议您使用命名参数。不能在一个脚本中混合使用名称和问号。如果使用问号,则参数必须按照如下所示的顺序并且仅当没有指定任何后继参数时才是可选的(例如,如果您想使用参数 2,则必须使用参数 1)。如果使用命名参数,则可以按照任何顺序指定任意参数子集。
参数 | 说明 | 顺序(不建议用于 SQL) |
---|---|---|
r. column-1 | 必需。新(后映像)列值中的第一个非主键列值,由列名或列编号引用。 | 1 |
... | ... | ... |
r. column-M | 必需。新(后映像)列值中的最后一个非主键列值,由列名或列编号引用。 | M |
r. pk-column-1 | 必需。新(后映像)列值中的第一个主键列值,由列名或列编号引用。 | M + 1 |
... | ... | ... |
r. pk-column-N | 必需。新(后映像)列值中的最后一个主键列值,由列名或列编号引用。 | M + N |
o. column-N | 可选。旧(前映像)列值中的第一个非主键列值,由列名或列编号引用。 | M + N + 1 |
... | ... | ... |
o. column-M | 可选。旧(前映像)列值中的最后一个非主键列值,由列名或列编号引用。 | M + N + M |
无。
WHERE 子句必须包括正被同步的所有主键列。SET 子句必须包含正被同步的所有非主键列。
可以按照任意顺序使用命名参数。可在同一个脚本中任意多次地使用同一命名参数。使用命名参数,只可以在脚本中指定列的子集。
例如,表 MyTable 的 upload_script 可写成:
UPDATE MyTable SET column_2 = { ml r.column_2 }, column_1 = { ml r.column_1 }, ..., column_M = { ml r.column_M } WHERE pk_column_1 = { ml r.pk_column_1 } AND ... AND pk_column_N = { ml r.pk_column_N } |
您可以为远程数据库的每个表编写一个 upload_update 脚本。
该脚本必须以 SQL 实现。对于行的 Java 或 .NET 处理,请参见直接行处理。
要使用 upload_update 脚本检测冲突,请在 WHERE 子句中包括所有非主键列。
UPDATE table-name SET col1 = {ml r.col1}, col2 = {ml r. col2 } ... WHERE pk1 = {ml r.pk1} AND pk2 = {ml r.pk2} ... AND col1 = {ml o.col1} AND col2 ={ml o.col2} ...
在此语句中,col1 和 col2 是非主键列,而 pk1 和 pk2 是主键列。传递到第二组非主键列中的值是更新行的前映像。WHERE 子句将比较从远程数据库上载的旧值与统一数据库中的当前值。如果两个值不匹配,将忽略更新,保留统一数据库中已有的值。
该脚本必须以 SQL 实现。对于行的 Java 或 .NET 处理,请参见直接行处理。
此示例处理远程数据库中对 Customer 表进行的更新。该脚本将更新统一数据库中名为 Customer 的表中的值。
CALL ml_add_table_script( 'ver1', 'table1', 'upload_update', 'UPDATE Customer SET name = {ml r.name}, rep_id = {ml r.rep_id} WHERE cust_id = {ml o.cust_id}') |
下一个示例执行类似的更新,但使用旧(前映像)值以确保只在没有冲突时进行更新。如果存在冲突,这种 "先入优先" 冲突解决策略会忽略该更新。
CALL ml_add_table_script( 'ver1', 'table1', 'upload_update', 'UPDATE Customer SET name = {ml r.name}, rep_id = {ml r.rep_id} WHERE cust_id = {ml o.cust_id}') AND name = {ml o.name} AND rep_id = {ml o.rep_id} |
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |