Entiteit invoegen of vervangen

De bewerking vervangt een bestaande entiteit of voegt een nieuwe entiteit Insert Or Replace Entity in als deze niet in de tabel bestaat. Omdat met deze bewerking een entiteit kan worden toegevoegd of bijgewerkt, wordt deze ook wel een upsert-bewerking genoemd.

Aanvraag

De Insert Or Replace Entity aanvraag kan als volgt worden samengesteld. HTTPS wordt aanbevolen. Vervang de volgende waarden door uw eigen waarden:

  • myaccount door de naam van uw opslagaccount

  • mytable door de naam van uw tabel

  • myPartitionKey en myRowKey met de naam van de partitiesleutel en rijsleutel voor de entiteit die moet worden bijgewerkt

Methode Aanvraag-URI HTTP-versie
PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

Geëmuleerde Storage Service

Wanneer u een aanvraag indient voor de geëmuleerde opslagservice, geeft u de hostnaam van de emulator en de Table-servicepoort op als 127.0.0.1:10002, gevolgd door de geëmuleerde opslagaccountnaam.

Methode Aanvraag-URI HTTP-versie
PUT http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

De Tabelservice in de opslagemulator verschilt op verschillende manieren van Windows® Azure™ Table-service. Zie Differences Between the Storage Emulator and Azure Storage Services (Verschillen tussen de Storage Emulator en Azure Storage Services) voor meer informatie.

URI-parameters

De volgende aanvullende parameters kunnen worden opgegeven op de aanvraag-URI.

Parameter Beschrijving
timeout Optioneel. De time-outparameter wordt uitgedrukt in seconden. Zie Time-outs instellen voor Tabelservicebewerkingen voor meer informatie.

Aanvraagheaders

In de volgende tabel worden de vereiste en optionele aanvraagheaders beschreven.

Aanvraagheader Beschrijving
Authorization Vereist. Hiermee geeft u het autorisatieschema, de accountnaam en de handtekening op. Zie Aanvragen voor toegang tot Azure Storage voor meer Azure Storage.
Date of x-ms-date Vereist. Geef de Coordinated Universal Time (UTC) op voor de aanvraag. Zie Aanvragen voor toegang tot Azure Storage voor meer Azure Storage.
x-ms-version Vereist, moet worden ingesteld op 2011-08-18 of nieuwer. Hiermee geeft u de versie van de bewerking moet worden gebruikt voor deze aanvraag. Zie Versioning for the Azure Storage Services (Versie Azure Storage services) voor meer informatie.
Content-Type Vereist. Hiermee geeft u het inhoudstype van de payload op. Mogelijke waarden zijn application/atom+xml en application/json .

Zie Nettolading-indeling voor Tabelservicebewerkingen voor meer informatie over geldige inhoudstypen.
Content-Length Vereist. De lengte van de aanvraagtekst.
x-ms-client-request-id Optioneel. Biedt een door de client gegenereerde, ondoorzichtige waarde met een limiet van 1 KiB die wordt vastgelegd in de analyselogboeken wanneer logboekregistratie van opslaganalyse is ingeschakeld. Het gebruik van deze header wordt ten zeerste aanbevolen voor het correleren van activiteiten aan clientzijde met aanvragen die door de server worden ontvangen. Zie About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests (Logboeken gebruiken om logboeken bij Storage volgen) voor meer informatie.

Aanvraagbody

De bewerking verzendt de entiteit die moet worden ingevoegd als een Insert Or Replace Entity OData-entiteitsset. Dit kan een JSON- of een Atom-feed zijn. Zie Inserting and Updating Entities (Entiteiten invoegen en bijwerken) voor meer informatie.

Notitie

JSON is de aanbevolen nettoladingindeling en is de enige indeling die wordt ondersteund voor versies 2015-12-11 en hoger.

Antwoord

Het antwoord bevat een HTTP-statuscode en een set antwoordheaders.

Statuscode

Een geslaagde bewerking retourneert statuscode 204 (geen inhoud).

Zie Status- en foutcodes en Tabelservicefoutcodes voor meer informatie over statuscodes.

Antwoordheaders

Het antwoord bevat de volgende headers. Het antwoord kan ook aanvullende standaard HTTP-headers bevatten. Alle standaardheaders voldoen aan de HTTP/1.1-protocolspecificatie.

Antwoordheader Beschrijving
ETag De ETag voor de entiteit.
x-ms-request-id Deze header identificeert op unieke manier de aanvraag die is gemaakt en kan worden gebruikt voor het oplossen van problemen met de aanvraag. Zie Troubleshooting API Operations (Problemen met API-bewerkingen oplossen) voor meer informatie.
x-ms-version Geeft de versie aan van de Table-service die wordt gebruikt om de aanvraag uit te voeren. Deze header wordt geretourneerd voor aanvragen voor versie 2009-09-19 en hoger.
Date Een UTC-datum/tijd-waarde die wordt gegenereerd door de service die de tijd aangeeft waarop het antwoord is gestart.
x-ms-client-request-id Deze header kan worden gebruikt om problemen met aanvragen en bijbehorende antwoorden op te lossen. De waarde van deze header is gelijk aan de waarde van de header als deze aanwezig is in de aanvraag en de waarde uit ten beste x-ms-client-request-id 1024 zichtbare ASCII-tekens bestaat. Als de x-ms-client-request-id header niet aanwezig is in de aanvraag, is deze header niet aanwezig in het antwoord.

Antwoord body

Geen.

Autorisatie

Deze bewerking kan worden uitgevoerd door de accounteigenaar en door iedereen met een Shared Access Signature die toestemming heeft om deze bewerking uit te voeren.

Voorbeeld van aanvraag en antwoord

In de onderstaande voorbeelden worden voorbeeldaanvragen weergegeven met behulp van JSON- en Atom-feeds.

Notitie

JSON is de aanbevolen nettoladingindeling en is de enige indeling die wordt ondersteund voor versies 2015-12-11 en hoger.

JSON (versies 2013-08-15 en hoger)

Hier volgt een voorbeeld van een aanvraag en antwoord met behulp van JSON.

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

De aanvraag wordt verzonden met de volgende headers:

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  

De aanvraag wordt verzonden met de volgende JSON-body:

{  
   "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"  
}  

Nadat de aanvraag is verzonden, wordt het volgende antwoord geretourneerd:

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  

Atom-feed (versies vóór 2015-12-11)

Hier volgt een voorbeeld van een aanvraag en antwoord met behulp van Atom.

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

De aanvraag wordt verzonden met de volgende headers:

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  

De aanvraag wordt verzonden met de volgende XML-body:

<?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>  

Nadat de aanvraag is verzonden, wordt het volgende antwoord geretourneerd:

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  

Opmerkingen

De bewerking maakt geen gebruik van If-Match-header en moet worden aangeroepen met de Insert Or Replace Entity versie 2011-08-18 of hoger. Deze kenmerken onderscheiden deze bewerking van de bewerking Entiteit bijwerken.

Als de bewerking wordt gebruikt om een entiteit te vervangen, worden alle eigenschappen van de vorige entiteit verwijderd als de nieuwe Insert Or Replace Entity entiteit deze niet definieert. Eigenschappen met een null-waarde worden ook verwijderd.

Wanneer u de bewerking Insert or Replace Entity aanroept, moet u waarden opgeven voor de PartitionKey systeemeigenschappen en RowKey . Samen vormen deze eigenschappen de primaire sleutel en moeten ze uniek zijn binnen de tabel.

Zowel de PartitionKey waarden RowKey als moeten tekenreekswaarden zijn. Elke sleutelwaarde kan maximaal 64 KiB groot zijn. Als u een geheel getal voor de sleutelwaarde gebruikt, moet u het gehele getal converteren naar een tekenreeks met een vaste breedte, omdat deze canoniek zijn gesorteerd. U moet de waarde bijvoorbeeld converteren 1 naar om de juiste 0000001 sortering te garanderen.

Als u expliciet een eigenschap wilt typen, geeft u het juiste OData-gegevenstype op door het kenmerk in te stellen in de eigenschapsdefinitie m:type in de Atom-feed. Zie Inserting and Updating Entities (Entiteiteninvoegen en bijwerken) voor meer informatie over het typen van eigenschappen.

Elke toepassing die een HTTP PUT-aanvraag kan autoreren en verzenden, kan een entiteit invoegen of vervangen.

Zie Entiteitsgroepstransacties uitvoeren voor meer informatie over het uitvoeren van batch-upsert-bewerkingen.

Zie ook

Aanvragen voor Azure Storage
De OData Data Service-versieheaders instellen
Entiteiten invoegen en bijwerken
Status- en foutcodes
Table Service-foutcodes