你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
合并实体
Merge Entity
操作通过更新实体的属性来更新现有的实体。 此操作不会像更新实体操作那样替换现有 实体 。
请求
可以按如下所示构造 Merge Entity
请求。 建议使用 HTTPS。 将 myaccount 替换为存储帐户的名称,将 mytable 替换为表的名称。 将 myPartitionKey 和 myRowKey 替换为标识要更新的实体的分区键和行键的名称。
方法 | 请求 URI | HTTP 版本 |
---|---|---|
MERGE |
https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') |
HTTP/1.1 |
要更新的实体的地址可以在请求 URI 上采用多种形式。 有关更多详细信息,请参阅 OData 协议 。
模拟存储服务 URI
针对模拟存储服务发出请求时,将模拟器主机名和 Azure 表存储端口指定为 127.0.0.1:10002
,后跟模拟存储帐户名称。
方法 | 请求 URI | HTTP 版本 |
---|---|---|
MERGE |
http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') |
HTTP/1.1 |
存储模拟器中的表存储在多个方面与 Azure 表存储不同。 有关详细信息,请参阅 存储模拟器与 Azure 存储服务之间的差异。
URI 参数
可以在请求 URI 上指定以下附加参数。
参数 | 说明 |
---|---|
timeout |
可选。
timeout 参数以秒表示。 有关详细信息,请参阅 设置表存储操作的超时。 |
请求标头
下表介绍必需的和可选的请求标头。
请求标头 | 说明 |
---|---|
Authorization |
必需。 指定授权方案、帐户名称和签名。 有关详细信息,请参阅授权对 Azure 存储的请求。 |
Date 或 x-ms-date |
必需。 指定请求的协调世界时 (UTC)。 有关详细信息,请参阅授权对 Azure 存储的请求。 |
x-ms-version |
可选。 指定用于此请求的操作的版本。 有关详细信息,请参阅 Azure 存储服务的版本控制。 |
Content-Type |
必需。 指定有效负载的内容类型。 可能值为 application/atom+xml 和 application/json 。有关有效内容类型的详细信息,请参阅 表存储操作的有效负载格式。 |
Content-Length |
必需。 请求正文的长度。 |
If-Match |
必需。 客户端可以为请求上的实体指定 ETag ,以便与服务维护的 进行比较 ETag ,以实现乐观并发。 仅当客户端发送的 与服务器维护的值匹配时 ETag ,才会执行更新操作。 此匹配表示自客户端检索实体以来尚未修改。要强制进行无条件更新,请将 If-Match 设置为通配符 (*)。 |
x-ms-client-request-id |
可选。 提供客户端生成的不透明值,其中包含 1-kiB (KiB) 配置日志记录时记录在日志中的字符限制。 强烈建议使用此标头将客户端活动与服务器接收的请求相关联。 有关详细信息,请参阅 监视 Azure 表存储。 |
请求正文
该 Merge Entity
操作将实体发送要更新为 OData
实体,可以是 JSON 或 Atom 源。 有关详细信息,请参阅 插入和更新实体。
响应
响应包括 HTTP 状态代码和一组响应标头。
状态代码
成功的操作将返回状态代码 204(无内容)。 有关状态代码的信息,请参阅 状态和错误代码 和 表存储错误代码。
响应头
此操作的响应包括以下标头。 响应还可以包含其他标准 HTTP 标头。 所有标准标头都符合 HTTP/1.1 协议规范。
响应标头 | 说明 |
---|---|
ETag |
ETag 实体的 。 |
x-ms-request-id |
此标头唯一标识发出的请求,可用于对请求进行故障排除。 有关详细信息,请参阅 API 操作疑难解答。 |
x-ms-version |
指示用于运行请求的表存储版本。 针对 2009-09-19 和更高版本发出的请求将返回此标头。 |
Date |
一个 UTC 日期/时间值,该值指示启动响应的时间。 服务生成此值。 |
x-ms-client-request-id |
可以使用此标头对请求和相应的响应进行故障排除。 如果请求中存在此标头的值,则此标头的值等于该标头的值 x-ms-client-request-id 。 该值最多为 1024 个可见 ASCII 字符。
x-ms-client-request-id 如果请求中不存在标头,则响应中不会显示此标头。 |
响应正文
无。
示例响应
Response Status:
HTTP/1.1 204 No Content
Response Headers:
Connection: Keep-Alive
Content-Length: 0
Cache-Control: no-cache
Date: Mon, 25 Nov 2013 19:06:47 GMT
ETag: W/"0x5B168C7B6E589D2"
x-ms-version: 2013-08-15
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 2.0;NetFx
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
授权
帐户所有者可以执行此操作。 此外,具有共享访问签名且有权执行此操作的任何人都可以执行此操作。
注解
表存储不会使 null
属性的值持久化。 指定具有 null
值的属性等效于在请求中省略该属性。 操作仅更新Merge Entity
具有非null
值的属性。
不能使用 Merge Entity
操作删除属性。 如果需要执行此操作,请通过调用 “更新 实体”操作替换实体。
合并实体时,必须将 和 RowKey
系统属性指定PartitionKey
为合并操作的一部分。
实体的 ETag
为合并操作提供默认的乐观并发。 该值 ETag
不透明,不应读取或依赖。 在合并操作发生之前,表存储会验证实体的当前ETag
值是否与标头中的If-Match
请求中包含的值相同ETag
。 如果值相同,则表存储确定实体自检索以来尚未修改,合并操作继续进行。
如果实体的 ETag
与合并请求中指定的不同,则合并操作将失败,状态代码 412 (先决条件失败) 。 此错误表明在检索实体后在服务器上更改了该实体。 若要解决此错误,请检索实体并重新发出请求。
要强制进行无条件更新,请将请求中的 If-Match
标头值设置为通配符 (*)。 将此值传递给操作将覆盖默认的乐观并发,并忽略值中的任何 ETag
不匹配。
If-Match
如果在版本 2011-08-18 及更高版本中的请求中缺少标头,则服务将执行插入或合并实体 (更新插入) 操作。 在 2011-08-18 之前的版本中,服务返回状态代码 400 (错误的请求) 。
任何可以授权和发送 HTTP MERGE
请求的应用程序都可以合并实体。 有关使用 HTTP MERGE
构造查询的详细信息,请参阅 添加、修改和删除实体。
有关执行批处理合并操作的信息,请参阅 执行实体组事务。