Vložení nebo nahrazení entity

Operace Insert Or Replace Entity nahradí existující entitu nebo vloží novou entitu, pokud v tabulce neexistuje. Protože tato operace může vložit nebo aktualizovat entitu, označuje se také jako operace upsert .

Žádost

Požadavek Insert Or Replace Entity lze vytvořit následujícím způsobem. Doporučuje se https. Nahraďte následující hodnoty vlastními hodnotami:

  • myaccount s názvem účtu úložiště

  • mytable s názvem tabulky

  • myPartitionKey a myRowKey s názvem klíče oddílu a klíče řádku pro aktualizaci entity

Metoda Identifikátor URI žádosti Verze PROTOKOLU HTTP
PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

Emulovaná služba Storage

Při vytváření požadavku na emulovanou službu úložiště zadejte název hostitele emulátoru a port služby Table Service jako 127.0.0.1:10002 následovaný názvem emulovaného účtu úložiště.

Metoda Identifikátor URI žádosti Verze PROTOKOLU HTTP
PUT http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

Služba Table Service v emulátoru úložiště se liší od služby Windows ® Azure™ Table Service několika způsoby. Další informace najdete v tématu Rozdíly mezi Storage Emulator a službami Azure Storage.

Parametry identifikátoru URI

V identifikátoru URI požadavku je možné zadat následující další parametry.

Parametr Popis
timeout Nepovinný parametr. Parametr časového limitu se vyjadřuje v sekundách. Další informace naleznete v tématu Nastavení časových limitů pro operace služby Table Service.

Hlavičky požadavku

Následující tabulka popisuje povinné a volitelné hlavičky požadavku.

Hlavička požadavku Popis
Authorization Povinná hodnota. Určuje schéma autorizace, název účtu a podpis. Další informace najdete v tématu Autorizace žádostí o Azure Storage.
Date nebo x-ms-date Povinná hodnota. Určuje formát UTC (Coordinated Universal Time). Další informace najdete v tématu Autorizace žádostí o Azure Storage.
x-ms-version Povinné, musí být nastaveno na 2011-08-18 nebo novější. Určuje verzi operace, která se má pro tento požadavek použít. Další informace najdete v tématu Správa verzí služby Azure Storage Services.
Content-Type Povinná hodnota. Určuje typ obsahu datové části. Možné hodnoty jsou application/atom+xml a application/json.

Další informace o platných typech obsahu najdete v tématu Formát datové části pro operace služby Table Service.
Content-Length Povinná hodnota. Délka textu požadavku.
x-ms-client-request-id Nepovinný parametr. Poskytuje hodnotu vygenerovanou klientem s 1 limitem znaků KiB, který se zaznamenává v analytických protokolech při povolení protokolování analýzy úložiště. Použití této hlavičky se důrazně doporučuje pro korelaci aktivit na straně klienta s požadavky přijatými serverem. Další informace najdete v tématu o protokolování Analýza úložiště a protokolování Azure: Sledování požadavků Storage pomocí protokolů.

Text požadavku

Operace Insert Or Replace Entity odešle entitu, která se má vložit jako sada entit OData, což může být JSON nebo informační kanál Atom. Další informace naleznete v tématu Vkládání a aktualizace entit.

Poznámka

JSON je doporučený formát datové části a je jediným formátem podporovaným pro verze 2015-12-11 a novější.

Odpověď

Odpověď obsahuje stavový kód HTTP a sadu hlaviček odpovědi.

Stavový kód

Úspěšná operace vrátí stavový kód 204 (bez obsahu).

Informace o stavových kódech naleznete v tématu Stavové a chybové kódy aKódy chyb služby Table Service.

Hlavičky odpovědi

Odpověď obsahuje následující hlavičky. Odpověď může obsahovat také další standardní hlavičky HTTP. Všechny standardní hlavičky odpovídají specifikaci protokolu HTTP/1.1.

Hlavička odpovědi Description
Etag Značky ETag pro entitu.
x-ms-request-id Tato hlavička jednoznačně identifikuje požadavek, který byl proveden, a lze ho použít k řešení potíží s požadavkem. Další informace najdete v tématu Řešení potíží s operacemi rozhraní API.
x-ms-version Označuje verzi služby Table Service použitou k provedení požadavku. Tato hlavička se vrátí pro požadavky provedené ve verzi 2009-09-19 a novější.
Date Hodnota data a času UTC vygenerovaná službou, která označuje čas, kdy byla odpověď zahájena.
x-ms-client-request-id Tato hlavička se dá použít k řešení potíží s požadavky a odpovídajícími odpověďmi. Hodnota této hlavičky se rovná hodnotě hlavičky, pokud se nachází v požadavku a hodnota je maximálně 1024 viditelných x-ms-client-request-id znaků ASCII. Pokud v požadavku není hlavička x-ms-client-request-id , nebude tato hlavička v odpovědi k dispozici.

Text odpovědi

Žádné

Autorizace

Tuto operaci může provést vlastník účtu a kdokoli se sdíleným přístupovým podpisem, který má oprávnění k provedení této operace.

Ukázkový požadavek a odpověď

Následující příklady ukazují ukázkové požadavky s využitím kanálů JSON i Atom.

Poznámka

JSON je doporučený formát datové části a je jediným formátem podporovaným pro verze 2015-12-11 a novější.

JSON (verze 2013-08-15 a novější)

Následuje ukázkový požadavek a odpověď pomocí JSON.

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

Požadavek se odešle s následujícími hlavičkami:

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  

Požadavek se odešle s následujícím textem 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"  
}  

Po odeslání požadavku se vrátí následující odpověď:

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  

Informační kanál Atom (verze starší než 2015-12-11)

Následuje ukázkový požadavek a odpověď pomocí Atomu.

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

Požadavek se odešle s následujícími hlavičkami:

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  

Požadavek se odešle s následujícím textem 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="https://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='myrowkey1')</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>  
    </m:properties>  
  </content>  
</entry>  

Po odeslání požadavku se vrátí následující odpověď:

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  

Poznámky

Operace Insert Or Replace Entity nepoužívá hlavičku If-Match a musí být volána pomocí verze 2011-08-18 nebo novější. Tyto atributy rozlišují tuto operaci od operace aktualizovat entitu .

Insert Or Replace Entity Pokud se operace používá k nahrazení entity, všechny vlastnosti z předchozí entity budou odebrány, pokud je nová entita nedefinuje. Vlastnosti s hodnotou null budou také odebrány.

Při volání Insert or Replace Entity operace je nutné zadat hodnoty pro PartitionKey vlastnosti systému a RowKey vlastnosti systému. Společně tyto vlastnosti tvoří primární klíč a musí být jedinečné v rámci tabulky.

PartitionKeyRowKey Obě hodnoty musí být řetězcové hodnoty. Každá hodnota klíče může mít velikost až 64 KiB. Pokud pro hodnotu klíče používáte celočíselnou hodnotu, měli byste celé číslo převést na řetězec s pevnou šířkou, protože jsou kanonicky seřazené. Hodnotu byste například měli převést 1 tak, aby 0000001 se zajistilo správné řazení.

Chcete-li explicitně zadat vlastnost, zadejte příslušný datový typ OData nastavením m:type atributu v definici vlastnosti v informačním kanálu Atom. Další informace o zadávání vlastností naleznete v tématu Vkládání a aktualizace entit.

Každá aplikace, která může autorizovat a odeslat požadavek HTTP PUT, může vložit nebo nahradit entitu.

Informace o provádění dávkových operací upsert naleznete v tématu Provádění transakcí skupin entit.

Viz také

Autorizace žádostí na Azure Storage
Nastavení hlaviček verze datové služby OData
Vkládání a aktualizace entit
Stavové kódy a kódy chyb
Kódy chyb služby Table Service