导出 (0) 打印
全部展开

插入或合并实体

更新时间: 2015年4月

Insert Or Merge Entity 操作更新现有的实体或插入新的实体(如果在表中不存在)。由于此操作可以插入或更新实体,因此,它也称为“更新插入”操作。

可以按如下方式构建Insert Or Merge Entity请求。建议使用 HTTPS。将以下值替换为你自己的值:

  • myaccount 替换为你的存储帐户名称

  • mytable 替换为你的表名称

  • myPartitionKeymyRowKey 替换为要更新的实体的分区键和行键名称

 

方法 请求 URI HTTP 版本

MERGE

https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey'

HTTP/1.1

在针对模拟的存储服务发出请求时,请将模拟器主机名和表服务端口指定为 127.0.0.1:10002,后跟模拟的存储帐户名称。

 

方法 请求 URI HTTP 版本

MERGE

http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey')

HTTP/1.1

存储模拟器中的表服务在某些方面与 Microsoft® Azure™ 表服务有所不同。有关详细信息,请参阅Differences Between the Storage Emulator and Azure Storage Services

无。

下表介绍必需的和可选的请求标头。

 

请求标头 说明

Authorization

必需。指定身份验证方案、帐户名和签名。有关详细信息,请参阅Azure 存储服务身份验证

Datex-ms-date

必需。为请求指定协调世界时 (UTC)。有关详细信息,请参阅Azure 存储服务身份验证

x-ms-version

必需。必须设置为 2011-08-18 或更高版本。指定用于此请求的操作的版本。有关详细信息,请参阅Windows Azure 中 BLOB 服务、队列服务和表服务的版本管理

Content-Type

必需。指定负载的内容类型。可能的值为 application/atom+xmlapplication/json

有关有效内容类型的详细信息,请参阅表服务操作的负载格式

Content-Length

必需。请求正文的长度。

x-ms-client-request-id

可选。提供客户端生成的、附带 1 KB 字符限制的模糊值,在启用存储分析日志记录时,将在分析日志中记录该值。强烈建议使用此标头将客户端活动与服务器接收的请求相关联。有关详细信息,请参阅关于存储分析日志记录Azure 日志记录:使用日志跟踪存储请求

Insert Or Merge Entity操作以 OData 实体集(可以是 JSON 或 Atom 负载)的形式发送要插入的实体。有关详细信息,请参阅插入和更新实体

响应包括 HTTP 状态代码和一组响应标头。

此操作成功后返回状态代码 204(No Content)。

有关状态代码的信息,请参阅状态和错误代码表服务错误代码

响应包含以下标头。该响应还可能包括其他标准 HTTP 标头。所有标准标头都符合 HTTP/1.1 协议规范

 

响应标头 说明

ETag

实体的 ETag。

x-ms-request-id

此标头唯一地标识发出的请求,并且可用于解决请求问题。有关详细信息,请参阅API 操作故障排除

x-ms-version

指示用于执行请求的表服务的版本。针对 2009-09-19 和更高版本发出的请求将返回此标头。

Date

服务生成的 UTC 日期/时间值指示启动响应的时间。

无。

帐户所有者以及使用有权执行此操作的共享访问签名的任何人可以执行此操作。

Atom:以下是一个示例 Atom 请求和响应:

MERGE https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')

请求与以下标头一起发送:

x-ms-version: 2013-08-15 Accept: application/atom+xml,application/xml Accept-Charset: UTF-8 Content-Type: application/atom+xml x-ms-date: Tue, 12 Nov 2013 18:10:24 GMT Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o= Content-Length: 1135 DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 2.0;NetFx

请求与以下 XML 正文一起发送:

<?xml version="1.0" encoding="utf-8"?> <entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">   <title />   <updated>2013-11-12T18:09:37.168836Z</updated>   <author>     <name />   </author> <id>https://myaccount.table.core.windows.net/mytable(PartitionKey='mypartitionkey',RowKey='myrowkey')</id>   <content type="application/xml">     <m:properties>       <d:Address>Santa Clara</d:Address>       <d:Age m:type="Edm.Int32">23</d:Age>       <d:AmountDue m:type="Edm.Double">200.23</d:AmountDue>       <d:CustomerCode m:type="Edm.Guid">c9da6455-213d-42c9-9a79-3e9149a57833</d:CustomerCode>       <d:CustomerSince m:type="Edm.DateTime">2008-07-10T00:00:00Z</d:CustomerSince>       <d:IsActive m:type="Edm.Boolean">false</d:IsActive>       <d:NumOfOrders m:type="Edm.Int64">255</d:NumOfOrders>       <d:PartitionKey>mypartitionkey</d:PartitionKey>       <d:RowKey>myrowkey1</d:RowKey>       <d:Timestamp m:type="Edm.DateTime">2013-11-12T18:09:37.9557508Z</d:Timestamp>     </m:properties>   </content> </entry>

在发送请求后,将返回以下响应:

HTTP/1.1 204 No Content  Connection: Keep-Alive x-ms-request-id: 2c085f8f-11a4-4e1d-bd49-82c6bd87649d Content-Length: 0 Cache-Control: no-cache Date: Tue, 12 Nov 2013 18:12:54 GMT ETag: W/"0x5B168C7B6E589D2" DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 2.0;NetFx Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0

JSON:以下是一个示例 JSON 请求和响应:

MERGE https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')

请求与以下标头一起发送:

x-ms-version: 2013-08-15 Content-Type: application/json x-ms-date: Tue, 30 Aug 2013 18:10:24 GMT Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o= Content-Length: 1135 DataServiceVersion: 3.0;NetFx MaxDataServiceVersion: 3.0;NetFx

请求与以下 JSON 正文一起发送:

{    "Address":"Santa Clara",    "Age":23,    "AmountDue":200.23,    "CustomerCode@odata.type":"Edm.Guid",    "CustomerCode":"c9da6455-213d-42c9-9a79-3e9149a57833",    "CustomerSince@odata.type":"Edm.DateTime",    "CustomerSince":"2008-07-10T00:00:00",    "IsActive":false,    "NumberOfOrders@odata.type":"Edm.Int64",    "NumberOfOrders":"255",    "PartitionKey":"mypartitionkey",    "RowKey":"myrowkey" }

在发送请求后,将返回以下响应:

 HTTP/1.1 204 No Content  Connection: Keep-Alive x-ms-request-id: 2c085f8f-11a4-4e1d-bd49-82c6bd87649d Content-Length: 0 Cache-Control: no-cache Date: Tue, 30 Aug 2013 18:12:54 GMT ETag: W/"0x5B168C7B6E589D2" DataServiceVersion: 3.0;NetFx MaxDataServiceVersion: 3.0;NetFx Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0

Insert Or Merge Entity 操作使用 MERGE 动词,并且必须使用 2011-08-18 或更高版本调用此操作。此外,它不使用 IF-Match 标头。这些属性将此操作与 Update Entity 操作区分开来,但两个操作的请求正文是相同的。

如果使用 Insert Or Merge Entity 操作合并实体,并且请求未定义或包含以前实体中的任何属性,则会保留这些属性。还会保留具有 Null 值的属性。

在调用 Insert or Merge Entity 操作时,必须指定 PartitionKeyRowKey 系统属性的值。这些属性共同构成了主键,并且在表中必须是唯一的。

PartitionKeyRowKey 值必须是字符串值;每个键值大小最多为 64 KB。如果将整数值作为键值,则应该将整数转换为固定宽度的字符串,因为它们是按规范排序的。例如,应该将 1 值转换为 0000001 以确保正确进行排序。

要显式指定属性类型,请通过在 Atom 馈送的属性定义中设置 m:type 特性来指定相应的 OData 类型。有关指定属性类型的更多信息,请参见插入和更新实体

可以验证和发送 HTTP MERGE 请求的任何应用程序都可以插入或更新实体。

有关执行批量更新插入操作的信息,请参见执行实体组事务

另请参阅

显示:
© 2015 Microsoft