銷售: 1-800-867-1380

插入或合併實體

更新日期: 2014年2月

Insert Or Merge Entity 作業可更新現有的實體,或插入資料表中不存在的新實體。由於這項作業可以插入或更新實體,因此又稱為「更新插入」(upsert) 作業。

Insert Or Merge Entity 要求的建構如下。建議使用 HTTPS。請以您自己的值取代下列值:

  • myaccount以您的儲存體帳戶名稱取代

  • mytable以您的資料表名稱取代

  • myPartitionKey以要更新之實體的資料分割索引鍵和資料列索引鍵名稱取代 myRowKey

 

方法 要求 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

儲存體模擬器中的表格服務與 Windows® Azure™ 表格服務有一些不同之處。如需詳細資訊,請參閱 儲存體模擬器和 Azure 儲存體服務之間的差異

無。

下表描述必要的和選用的要求標頭。

 

要求標頭 描述

Authorization

必要項。指定驗證配置、帳戶名稱及簽章。如需詳細資訊,請參閱Azure 儲存體服務的驗證

Datex-ms-date

必要項。指定要求的國際標準時間 (UTC)。如需詳細資訊,請參閱Azure 儲存體服務的驗證

x-ms-version

必要項。必須設為 2011-08-18 版或更新版本。指定用於這個要求的作業版本。如需詳細資訊,請參閱Azure 儲存體服務的版本設定

Content-Type

必要項。指定裝載的內容類型。可能的值是 application/atom+xmlapplication/json

如需有效內容類型的詳細資訊,請參閱表格服務作業的裝載格式

Content-Length

必要項。要求主體的長度。

x-ms-client-request-id

選擇性。提供由用戶端產生的不透明值 (具有 1 KB 的字元限制),當儲存體分析記錄為啟用狀態時,此值會記錄在分析記錄檔中。如果是和伺服器所接收的要求相關的用戶端活動,則強烈建議您使用此標頭。如需詳細資訊,請參閱關於儲存體分析記錄Windows Azure 記錄:使用記錄檔追蹤儲存體需求

Insert Or Merge Entity 作業會傳送要插入的實體做為 OData 實體集,此實體集可能是 Atom 或 JSON 裝載。如需詳細資訊,請參閱插入及更新實體

回應包括 HTTP 狀態碼和一組回應標頭。

成功的作業會傳回狀態碼 204 (No Content)。

如需狀態碼的資訊,請參閱狀態和錯誤碼表格服務錯誤碼

回應包含下列標頭。回應也可能包括其他標準 HTTP 標頭。所有標準標頭都符合 HTTP/1.1 通訊協定規格

 

回應標頭 描述

ETag

實體的 ETag。

x-ms-request-id

此標頭可唯一識別提出的要求,而且可用來進行要求的疑難排解。如需詳細資訊,請參閱對應用程式開發介面作業進行疑難排解

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 要求的所有應用程式都可以插入或更新實體。

如需執行批次更新插入作業的資訊,請參閱執行實體群組交易

另請參閱

本文對您有任何幫助嗎?
(剩餘 1500 個字元)
感謝您提供意見
顯示:
© 2014 Microsoft