Entiteit bijwerken

Met Update Entity de bewerking wordt een bestaande entiteit in een tabel bijgewerkt. De Update Entity bewerking vervangt de hele entiteit en kan worden gebruikt om eigenschappen te verwijderen.

Aanvraag

De Update Entity aanvraag kan als volgt worden samengesteld. HTTPS wordt aanbevolen. Vervang myaccount door de naam van uw opslagaccount, door de naam van uw tabel mytable en myPartitionKey en myRowKey door de naam van de partitiesleutel en rijsleutel die de entiteit identificeren die moet worden bijgewerkt:

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

Het adres van de entiteit die moet worden bijgewerkt, kan een aantal formulieren in de aanvraag-URI aannemen. Zie het OData-protocol voor meer informatie.

Geëmuleerde Storage Service-URI

Wanneer u een aanvraag indient voor de geëmuleerde opslagservice, geeft u de hostnaam van de emulator en de Table-servicepoort op als , gevolgd door de geëmuleerde 127.0.0.1:10002 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 Optioneel. 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 Table Service-bewerkingen voor meer informatie over geldige inhoudstypen.
Content-Length Vereist. De lengte van de aanvraagtekst.
If-Match Vereist. De client kan de ETag voor de entiteit op de aanvraag opgeven om te vergelijken met de ETag die wordt onderhouden door de service met het oog op optimistische gelijktijdigheid. De updatebewerking wordt alleen uitgevoerd als de ETag die door de client wordt verzonden overeenkomt met de waarde die wordt onderhouden door de server, wat aangeeft dat de entiteit niet is gewijzigd sinds deze is opgehaald door de client.

Als u een onvoorwaardelijke update wilt forceer, stelt u in If-Match op het jokerteken (*).
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 om te worden bijgewerkt als een Update 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.

Voorbeeldaanvraag

JSON (versies 2013-08-15 en hoger)

In dit voorbeeld ziet u een voorbeeldaanvraag-URI, de bijbehorende aanvraagheaders en de aanvraagtekst voor een JSON-feed.

Request Headers:  
x-ms-version: 2015-12-11  
Accept-Charset: UTF-8  
Content-Type: application/json  
If-Match: *  
x-ms-date: Mon, 27 Jun 2016 18:10:24 GMT  
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=  
Content-Length: ###  
DataServiceVersion: 3.0;NetFx  
MaxDataServiceVersion: 3.0;NetFx  
  
{  
   "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"  
}  

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

In dit voorbeeld ziet u een voorbeeldaanvraag-URI, de bijbehorende aanvraagheaders en de aanvraagtekst voor een Atom-feed.

Request URI:  
https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')  
  
Request Headers:  
x-ms-version: 2013-08-15  
Accept: application/atom+xml,application/xml  
Accept-Charset: UTF-8  
Content-Type: application/atom+xml  
If-Match: *  
x-ms-date: Wed, 20 Nov 2013 18:10:24 GMT  
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=  
Content-Length: ###  
DataServiceVersion: 1.0;NetFx  
MaxDataServiceVersion: 2.0;NetFx  
  
Request 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="http://www.w3.org/2005/Atom">  
  <title />  
  <updated>2008-09-18T23:46: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>myrowkey</d:RowKey>  
    </m:properties>  
  </content>  
</entry>  

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.

Voorbeeldreactie

Response Status:  
HTTP/1.1 204 No Content  
  
Response Headers:  
Connection: Keep-Alive  
x-ms-request-id: 2c085f8f-11a4-4e1d-bd49-82c6bd87649d  
Content-Length: 0  
Cache-Control: no-cache  
Date: Mon, 27 Jun 2016 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  

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.

Opmerkingen

Bij het bijwerken van een entiteit moet u de systeemeigenschappen PartitionKey en opgeven als onderdeel van de RowKey updatebewerking.

De ETag van een entiteit biedt standaard optimistische gelijktijdigheid voor updatebewerkingen. De ETag-waarde is ondoorzichtig en mag niet worden gelezen of vertrouwd. Voordat er een updatebewerking plaatsvindt, controleert de Tabelservice of de huidige ETag-waarde van de entiteit identiek is aan de ETag-waarde die is opgenomen in de updateaanvraag in de If-Match header. Als de waarden identiek zijn, bepaalt de Tabelservice dat de entiteit niet is gewijzigd sinds deze is opgehaald en de updatebewerking wordt uitgevoerd.

Als de ETag van de entiteit verschilt van de ETag die is opgegeven met de updateaanvraag, mislukt de updatebewerking met statuscode 412 (Voorwaarde mislukt). Deze fout geeft aan dat de entiteit is gewijzigd op de server sinds deze is opgehaald. U kunt deze fout oplossen door de entiteit opnieuw op te halen en de aanvraag opnieuw uit te geven.

Als u een onvoorwaardelijke updatebewerking wilt forceeren, stelt u de waarde van de header in op If-Match het jokerteken (*) voor de aanvraag. Als u deze waarde door geeft aan de bewerking, wordt de standaard optimistische gelijktijdigheid overschrijven en eventuele niet-overeenkomende ETag-waarden genegeerd.

Als de header ontbreekt in de aanvraag in versies If-Match 2011-08-18 en hoger, voert de service een upsert-bewerking (Insert or Replace Entity) uit. In versies vóór 2011-08-18 retourneert de service statuscode 400 (Bad Request).

De Tabelservice behoudt geen null waarden voor eigenschappen. Het opgeven van een eigenschap met een waarde is gelijk aan het null weglaten van die eigenschap in de aanvraag.

Notitie

U kunt van beide gedragingen profiteren om een eigenschap uit een entiteit te verwijderen.

Als u expliciet een eigenschap wilt typen, geeft u het juiste OData-gegevenstype op door het kenmerk in te stellen in de m:type eigenschapsdefinitie 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 autoriseren en verzenden, kan een entiteit bijwerken.

Zie Entiteitsgroepstransacties uitvoeren voor meer informatie over het uitvoeren van batchupdatebewerkingen.

Zie ook

Entiteit samenvoegen
Aanvragen voor Azure Storage
De OData Data Service-versieheaders instellen
Status- en foutcodes
Table Service-foutcodes