合併實體

Merge Entity 作業可透過更新實體的屬性,以更新現有的實體。 這項作業不會取代現有的實體,因為 更新實體 作業會一樣。

要求

您可以建構 Merge Entity 要求,如下所示。 建議使用 HTTPS。 將 myaccount 取代為您的儲存體帳戶名稱,並將 mytable 取代為數據表的名稱。 將 myPartitionKeymyRowKey 取代為分割區索引鍵和資料列索引鍵的名稱,以識別要更新的實體。

方法 要求 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 儲存體提出要求
Datex-ms-date 必要。 指定要求的「國際標準時間」(UTC)。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
x-ms-version 選擇性。 指定用於這個要求的作業版本。 如需詳細資訊,請參閱 Azure 儲存體服務的版本
Content-Type 必要。 指定承載的內容類型。 可能的值是 application/atom+xmlapplication/json

如需有效內容類型的詳細資訊,請參閱 資料表儲存體作業的承載格式
Content-Length 必要。 要求本文的長度。
If-Match 必要。 用戶端可以在要求上指定 ETag 實體的 ,以便與服務為了開放式平行存取而維護的 比較 ETag 。 只有在用戶端傳送的 符合伺服器所維護的值時 ETag ,才會執行更新作業。 此比對表示實體自用戶端擷取後尚未修改。

若要強制執行無條件更新,請將 If-Match 設為萬用字元 (*)。
x-ms-client-request-id 選擇性。 提供用戶端產生的不透明值,其中包含設定記錄時記錄的 1 kibibyte (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 值與 ETag 標頭中 If-Match 要求所包含的值相同。 如果值相同,資料表儲存體會判斷實體自擷取後尚未修改,而且合併作業會繼續進行。

如果實體與 ETag 合併要求指定的不同,合併作業會失敗,狀態碼為 412 (前置條件失敗) 。 此錯誤表示伺服器上的實體自擷取後已經變更。 若要解決此錯誤,請擷取實體並重新發出要求。

若要強制執行無條件合併作業,請將要求中 If-Match 標頭的值設為萬用字元 (*)。 將此值傳遞至作業將會覆寫預設、開放式平行存取,並忽略值中的任何 ETag 不符。

If-Match如果標頭在 2011-08-18 版和更新版本中的要求遺失,則服務會執行插入或合併實體 (upsert) 作業。 在 2011-08-18 之前的版本中,服務會傳回狀態碼 400 (不正確的要求) 。

任何可以授權和傳送 HTTP MERGE 要求的應用程式都可以合併實體。 如需使用 HTTP MERGE 建構查詢的詳細資訊,請參閱 新增、修改和刪除實體

如需執行批次合併作業的相關資訊,請參閱 執行實體群組交易

另請參閱

更新實體
授權對 Azure 儲存體的要求
設定 OData 資料服務版本標頭
狀態和錯誤碼
資料表儲存體錯誤碼