合併實體
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 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
建構查詢的詳細資訊,請參閱 新增、修改和刪除實體。
如需執行批次合併作業的相關資訊,請參閱 執行實體群組交易。