updategram 指示在前>块中出现记录实例时<删除作,且后>块中<没有相应的记录。 在这种情况下,updategram 将从数据库中删除前>块中的<记录。
这是删除作的 updategram 格式:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync [mapping-schema="SampleSchema.xml"] >
<updg:before>
<ElementName />
[<ElementName .../>... ]
</updg:before>
[<updg:after>
</updg:after>]
</updg:sync>
</ROOT>
如果 updategram 仅执行删除作,则可以省略 <后> 标记。 如果未指定可选 mapping-schema 属性, <updategram 中指定的 ElementName> 将映射到数据库表,子元素或属性映射到表中的列。
如果 updategram 中指定的元素匹配表中的多个行,或者与任何行不匹配,则 updategram 将返回错误并取消整个 <同步> 块。 updategram 中的元素一次只能删除一条记录。
例子
本节中的示例使用默认映射(即,updategram 中未指定映射架构)。 有关使用映射架构的更新报的更多示例,请参阅在 Updategram 中指定带批注的映射架构(SQLXML 4.0)。
若要使用以下示例创建工作示例,必须满足 运行 SQLXML 示例的要求中指定的要求。
答: 使用 updategram 删除记录
以下 updategram 从 HumanResources.Shift 表中删除两条记录。
在这些示例中,updategram 未指定映射架构。 因此,updategram 使用默认映射,其中元素名称映射到表名,属性或子元素映射到列。
第一个 updategram 以属性为中心,在前>块中<标识两个班次(Day-Evening 和 Evening-Night)。 由于后<>块中没有相应的记录,因此这是一个删除作。
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
<HumanResources.Shift ShiftID="4"
Name="Day-Evening"
StartTime="1900-01-01 11:00:00.000"
EndTime="1900-01-01 19:00:00.000"
ModifiedDate="2004-01-01 00:00:00.000" />
<HumanResources.Shift ShiftID="5"
Name="Evening-Night"
StartTime="1900-01-01 19:00:00.000"
EndTime="1900-01-01 03:00:00.000"
ModifiedDate="2004-01-01 00:00:00.000" />
</updg:before>
<updg:after>
</updg:after>
</updg:sync>
</ROOT>
测试 updategram
在 “使用 XML Updategram 插入数据”(SQLXML 4.0)中的完整示例 B(“使用 updategram 插入多个记录”。
将上面的 updategram 复制到记事本,并将其另存为 Updategram-RemoveShifts.xml,与用于完成(“使用 updategram 插入多个记录”)中的 “使用 XML 更新报(SQLXML 4.0)插入数据”相同。
创建并使用 SQLXML 4.0 测试脚本(Sqlxml4test.vbs)执行 updategram。
有关详细信息,请参阅使用 ADO 执行 SQLXML 4.0 查询。