使用 XML updategram 时,请记住以下几点:
如果将 updategram 用于插入作,且只包含一对之前>和之后的<块,<则可以省略前>一个块。>< 相反,如果删除作, <可以省略后> 块。
如果将 updategram 与同步>标记中的<多个<块><>一起使用,则必须在块之前和<之后>>都指定为成对前后<>的<块。><
updategram 中的更新将应用于 XML 架构提供的 XML 视图。 因此,若要使默认映射成功,必须在 updategram 中指定架构文件名;如果未提供文件名,则元素和属性名称必须与数据库中的表和列名匹配。
SQLXML 4.0 要求必须在提供的架构(XDR 或 XSD)中显式映射 updategram 中的所有列值,以便为其子元素撰写 XML 视图。 此行为与早期版本的 SQLXML 不同,在注释中
sql:relationship隐含为外键的一部分时,该行为允许架构中未映射的列的值。 (请注意,此更改不会影响将主键值传播到子元素,如果未为子元素显式指定任何值,则 SQLXML 4.0 仍会发生此更改。如果使用 updategram 修改二进制列中的数据(如 SQL Server
image数据类型),则必须提供映射架构,其中必须指定 SQL Server 数据类型(例如sql:datatype="image")和 XML 数据类型(例如dt:type="binhex"或dt:type="binbase64)。 必须在 updategram 中指定二进制列的数据;sql:url-encodeupdategram 忽略映射架构中指定的批注。编写 XSD 架构时,如果为
sql:relation或sql:field批注指定的值包括一个特殊字符,例如空格字符(例如,在“订单详细信息”表名称中),该值必须括在方括号中(例如“[订单详细信息]”)。使用 updategram 时,不支持链关系。 例如,如果表 A 和 C 通过使用表 B 的链关系相关,则尝试运行和执行 updategram 时会发生以下错误:
There is an inconsistency in the schema provided.即使架构和 updategram 均正确且格式有效,但如果存在链关系,也会发生此错误。
Updategram 不允许在更新期间将类型数据作为参数传递
image。二进制大型对象(BLOB)类型(如
text/ntext和图像)不应在 <处理 updategram 时在块中使用> ,因为这将包括它们以用于并发控制。 这可能会导致 SQL Server 出现问题,因为 BLOB 类型的比较存在限制。 例如,WHERE 子句中使用 LIKE 关键字来比较数据类型的text列;但是,如果 BLOB 类型的大小大于 8K,则比较将失败。数据中的
ntext特殊字符可能会导致 SQLXML 4.0 出现问题,因为 BLOB 类型的比较存在限制。 例如,在对类型的列ntext进行并发检查时,在 updategram 的前面>块中使用“[Serializable]”<将失败,并出现以下 SQLOLEDB 错误说明:Empty update, no updatable rows found Transaction aborted