使用 XML updategram 删除数据 (SQLXML 4.0)

当记录实例出现在 <before> 块中并且在 <after> 块中没有相应记录时,updategram 指示删除操作。这种情况下,updategram 将从数据库中删除 <before> 块中的记录。

下面是 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 仅执行删除操作,则可以省略 <after> 标记。如果不指定可选的 mapping-schema 属性,则在 updategram 中指定的 <ElementName> 将映射到数据库表,并且子元素或属性映射到表中的列。

如果在 updategram 中指定的元素要么匹配表中的多个行,要么不匹配任何行,则 updategram 返回错误,并取消整个 <sync> 块。updategram 中的元素每次只能删除一个记录。

示例

本节中的示例使用默认映射(即未在 updategram 中指定映射架构)。有关使用映射架构的 updategram 的更多示例,请参阅 在 updategram 中指定带批注的映射架构 (SQLXML 4.0)

若要创建使用以下示例的工作示例,则必须满足运行 SQLXML 示例的要求 中指定的要求。

A. 使用 updategram 删除记录

以下 updategram 将从 HumanResources.Shift 表中删除两个记录。

在这些示例中,updategram 不指定映射架构。因此,updategram 使用默认映射,其中元素名称映射到表名称,而属性或子元素映射到列。

其中第一个 updategram 是以属性为中心的,并且在 <before> 块中标识两个轮班(Day-Evening 和 Evening-Night)。由于在 <after> 块中没有相应记录,因此这是删除操作。

<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

  1. 使用 XML updategram 插入数据 (SQLXML 4.0)中完成示例 B(“使用 updategram 插入多个记录”)。

  2. 将上面的 updategram 复制到记事本,并将它另存为 Updategram-RemoveShifts.xml,保存在用于完成使用 XML updategram 插入数据 (SQLXML 4.0)中的“使用 updategram 插入多个记录”的同一文件夹中。

  3. 创建并使用 SQLXML 4.0 测试脚本 (Sqlxml4test.vbs) 以执行 updategram。

    有关详细信息,请参阅使用 ADO 执行 SQLXML 4.0 查询