Entität aktualisieren
Mit dem Vorgang Update Entity
wird eine vorhandene Entität in einer Tabelle aktualisiert. Der Update Entity
Vorgang ersetzt die gesamte Entität, und Sie können den Vorgang verwenden, um Eigenschaften zu entfernen.
Anforderung
Sie können die Update Entity
Anforderung wie folgt erstellen. HTTPS wird empfohlen. Ersetzen Sie myaccount durch den Namen Ihres Speicherkontos und mytable
durch den Namen Ihrer Tabelle. Ersetzen Sie myPartitionKey und myRowKey durch den Namen des Partitionsschlüssels und Zeilenschlüssels, die die zu aktualisierende Entität identifizieren.
Methode | Anforderungs-URI | HTTP-Version |
---|---|---|
PUT |
https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') |
HTTP/1.1 |
Die Adresse der zu aktualisierenden Entität kann eine Reihe von Formularen für den Anforderungs-URI annehmen. Weitere Details finden Sie im OData-Protokoll .
Emulierter Speicherdienst-URI
Wenn Sie eine Anforderung an den emulierten Speicherdienst stellen, geben Sie den Emulatorhostnamen und den Azure Table Storage-Port als 127.0.0.1:10002
an, gefolgt vom Namen des emulierten Speicherkontos.
Methode | Anforderungs-URI | HTTP-Version |
---|---|---|
PUT |
http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') |
HTTP/1.1 |
Table Storage im Speicheremulator unterscheidet sich auf verschiedene Weise von Azure Table Storage. Weitere Informationen finden Sie unter Unterschiede zwischen dem Speicheremulator und den Azure Storage-Diensten.
URI-Parameter
Sie können die folgenden zusätzlichen Parameter für den Anforderungs-URI angeben.
Parameter | BESCHREIBUNG |
---|---|
timeout |
Optional. Der timeout -Parameter wird in Sekunden angegeben. Weitere Informationen finden Sie unter Festlegen von Timeouts für Table Storage-Vorgänge. |
Anforderungsheader
In der folgenden Tabelle werden erforderliche und optionale Anforderungsheader beschrieben.
Anforderungsheader | BESCHREIBUNG |
---|---|
Authorization |
Erforderlich. Gibt das Autorisierungsschema, den Kontonamen und die Signatur an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage. |
Date oder x-ms-date |
Erforderlich. Gibt die koordinierte Weltzeit (Coordinated Universal Time, UTC) für die Anforderung an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage. |
x-ms-version |
Optional. Gibt die Version des für die Anforderung zu verwendenden Vorgangs an. Weitere Informationen finden Sie unter Versionsverwaltung für die Azure-Speicherdienste. |
Content-Type |
Erforderlich. Gibt den Inhaltstyp der Nutzlast an. Mögliche Werte sind application/atom+xml und application/json .Weitere Informationen zu gültigen Inhaltstypen finden Sie unter Nutzlastformat für Table Storage-Vorgänge. |
Content-Length |
Erforderlich. Die Länge des Anforderungstexts. |
If-Match |
Erforderlich. Der Client kann für ETag die Entität in der Anforderung angeben, um mit der ETag vom Dienst verwalteten zu vergleichen, um eine optimistische Parallelität zu erzielen. Der Updatevorgang wird nur ausgeführt, wenn der ETag vom Client gesendete mit dem vom Server verwalteten Wert übereinstimmt. Diese Übereinstimmung gibt an, dass die Entität nicht geändert wurde, seit sie vom Client abgerufen wurde.Um ein unbedingtes Update zu erzwingen, legen Sie If-Match auf das Platzhalterzeichen (*) fest. |
x-ms-client-request-id |
Optional. Stellt einen vom Client generierten, undurchsichtigen Wert mit einem Zeichenlimit von 1 Kibibyte (KiB) bereit, der in den Protokollen aufgezeichnet wird, wenn die Protokollierung konfiguriert ist. Es wird dringend empfohlen, diesen Header zu verwenden, um clientseitige Aktivitäten mit Anforderungen zu korrelieren, die der Server empfängt. Weitere Informationen finden Sie unter Überwachen von Azure Table Storage. |
Anforderungstext
Der Update Entity
Vorgang sendet die zu aktualisierende Entität als Entitätssatz OData
, bei der es sich entweder um einen JSON- oder einen Atom-Feed handeln kann. Weitere Informationen finden Sie unter Einfügen und Aktualisieren von Entitäten.
Hinweis
JSON ist das empfohlene Nutzlastformat und das einzige Format, das für Version 2015-12-11 und höher unterstützt wird.
Beispiel für eine Anforderung
JSON (Version 2013-08-15 und höher)
Dieses Beispiel zeigt einen Anforderungs-URI, die zugehörigen Anforderungsheader und den Anforderungstext für einen 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 (Versionen vor 2015-12-11)
Dieses Beispiel zeigt einen Beispielanforderungs-URI, die zugeordneten Anforderungsheader und den Anforderungstext für einen 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>
Antwort
Die Antwort enthält den HTTP-Statuscode und einen Satz von Antwortheadern.
Statuscode
Bei einem erfolgreichen Vorgang wird der Statuscode 204 (Kein Inhalt) zurückgegeben. Informationen zu status-Codes finden Sie unter Status- und Fehlercodes und Tabellenspeicherfehlercodes.
Antwortheader
Die Antwort enthält die folgenden Header. Die Antwort kann auch zusätzliche HTTP-Standardheader enthalten. Alle Standardheader entsprechen der HTTP/1.1-Protokollspezifikation.
Antwortheader | BESCHREIBUNG |
---|---|
ETag |
Die ETag für die Entität. |
x-ms-request-id |
Dieser Header identifiziert die durchgeführte Anforderung eindeutig und kann für die Problembehandlung der Anforderung verwendet werden. Weitere Informationen finden Sie unter Problembehandlung für API-Vorgänge. |
x-ms-version |
Gibt die Version von Table Storage an, die zum Ausführen der Anforderung verwendet wird. Dieser Header wird für Anforderungen zurückgegeben, die für Version 2009-09-19 und höher erfolgen. |
Date |
Ein UTC-Datums-/Uhrzeitwert, der den Zeitpunkt angibt, zu dem die Antwort initiiert wurde. Der Dienst generiert diesen Wert. |
x-ms-client-request-id |
Sie können diesen Header verwenden, um Probleme mit Anforderungen und entsprechenden Antworten zu beheben. Der Wert dieses Headers ist gleich dem Wert des x-ms-client-request-id Headers, wenn er in der Anforderung vorhanden ist. Der Wert beträgt höchstens 1.024 sichtbare ASCII-Zeichen. Wenn der x-ms-client-request-id Header in der Anforderung nicht vorhanden ist, ist dieser Header in der Antwort nicht vorhanden. |
Antworttext
Keine.
Beispiel für eine Antwort
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
Authorization
Der Kontobesitzer kann diesen Vorgang ausführen. Darüber hinaus kann jeder mit einer Shared Access Signature, der über die Berechtigung zum Ausführen dieses Vorgangs verfügt, dies tun.
Hinweise
Wenn Sie eine Entität aktualisieren, müssen Sie die PartitionKey
Systemeigenschaften und RowKey
als Teil des Aktualisierungsvorgangs angeben.
Eine Entität bietet ETag
standardmäßig optimistische Parallelität für Updatevorgänge. Der ETag
Wert ist undurchsichtig und darf nicht gelesen oder verwendet werden. Bevor ein Aktualisierungsvorgang erfolgt, überprüft Table Storage, ob der aktuelle ETag
Wert der Entität mit dem Wert identisch ist, der ETag
in der Updateanforderung im If-Match
Header enthalten ist. Wenn die Werte identisch sind, ermittelt Table Storage, dass die Entität seit dem Abrufen nicht geändert wurde, und der Aktualisierungsvorgang wird fortgesetzt.
Wenn sich die Entität ETag
von der in der Updateanforderung angegebenen unterscheidet, schlägt der Updatevorgang mit status Code 412 (Vorbedingung fehlgeschlagen) fehl. Dieser Fehler gibt an, dass die Entität auf dem Server geändert wurde, seit sie abgerufen wurde. Um diesen Fehler zu beheben, rufen Sie die Entität erneut ab, und senden Sie die Anforderung erneut.
Um einen nicht bedingten Updatevorgang zu erzwingen, legen Sie in der Anforderung den Wert des If-Match
-Headers auf das Platzhalterzeichen (*) fest. Durch die Übergabe dieses Werts an den Vorgang wird die standardmäßige optimistische Parallelität außer Kraft gesetzt, und alle Nichtübereinstimmungen in ETag
Werten werden ignoriert.
Wenn der If-Match
Header in der Anforderung in Version 2011-08-18 oder höher fehlt, führt der Dienst einen Vorgang zum Einfügen oder Ersetzen einer Entität (Upsert) durch. In Früheren Versionen als 2011-08-18 gibt der Dienst status Code 400 (Ungültige Anforderung) zurück.
Table Storage speichert null
keine Werte für Eigenschaften. Das Angeben einer Eigenschaft mit einem null
Wert entspricht dem Weglassen dieser Eigenschaft in der Anforderung.
Hinweis
Sie können eines der beiden Verhaltensweisen nutzen, um eine Eigenschaft aus einer Entität zu entfernen.
Um eine Eigenschaft explizit einzugeben, geben Sie den entsprechenden OData
Datentyp an, indem Sie das m:type
Attribut innerhalb der Eigenschaftendefinition im Atom-Feed festlegen. Weitere Informationen zum Eingeben von Eigenschaften finden Sie unter Einfügen und Aktualisieren von Entitäten.
Jede Anwendung, die eine HTTP-Anforderung PUT
autorisieren und senden kann, kann eine Entität aktualisieren.
Informationen zum Ausführen von Batchupdatevorgängen finden Sie unter Ausführen von Entitätsgruppentransaktionen.
Weitere Informationen
Entität zusammenführen
Autorisieren von Anforderungen an Azure Storage
Festlegen der OData-Datendienst-Versionsheader
Status- und Fehlercodes
Tabellenspeicherfehlercodes