Aktualizowanie jednostki

Operacja Update Entity aktualizuje istniejącą jednostkę w tabeli. Operacja zastępuje całą jednostkę i Update Entity może służyć do usuwania właściwości.

Żądanie

Żądanie Update Entity może zostać skonstruowane w następujący sposób. Protokół HTTPS jest zalecany. Zastąp wartości myaccount nazwą konta magazynu, nazwą tabeli, a wartości mytable myPartitionKey i myRowKey nazwą klucza partycji i klucza wiersza identyfikującego jednostkę do zaktualizowania:

Metoda Identyfikator URI żądania Wersja PROTOKOŁU HTTP
PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

Adres jednostki, która ma zostać zaktualizowana, może przyjmować wiele formularzy w identyfikatorze URI żądania. Aby uzyskać dodatkowe informacje, zobacz Protokół OData.

Emulowany Storage URI usługi

Podczas tworzenia żądania względem emulowanej usługi magazynu określ nazwę hosta emulatora i port usługi Table Jako , a następnie 127.0.0.1:10002 nazwę emulowanej konta magazynu:

Metoda Identyfikator URI żądania Wersja PROTOKOŁU HTTP
PUT http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

Usługa Table Service w emulatorze magazynu różni się od usługi Windows® Azure™ Table na kilka sposobów. Aby uzyskać więcej informacji, zobacz Differences Between the Storage Emulator and Azure Storage Services (Różnicemiędzy usługami Azure Storage Emulator i Azure Storage Services).

Parametry identyfikatora URI

W żądaniu URI można określić następujące dodatkowe parametry.

Parametr Opis
timeout Opcjonalny. Parametr limitu czasu jest wyrażony w sekundach. Aby uzyskać więcej informacji, zobacz Ustawianie limitów czasu dla operacji usługi Table Service.

Nagłówki żądań

W poniższej tabeli opisano wymagane i opcjonalne nagłówki żądań.

Nagłówek żądania Opis
Authorization Wymagane. Określa schemat autoryzacji, nazwę konta i podpis. Aby uzyskać więcej informacji, zobacz Autoryzowanie żądań do usługi Azure Storage.
Date lub x-ms-date Wymagane. Określa dla żądania godzinę w formacie uniwersalnego czasu koordynowanego (UTC). Aby uzyskać więcej informacji, zobacz Autoryzowanie żądań do usługi Azure Storage.
x-ms-version Opcjonalny. Określa wersję operacji do użycia dla tego żądania. Aby uzyskać więcej informacji, zobacz Versioning for the Azure Storage Services (Wersjeusług Azure Storage Services).
Content-Type Wymagane. Określa typ zawartości ładunku. Możliwe wartości to application/atom+xml i application/json .

Aby uzyskać więcej informacji o prawidłowych typach zawartości, zobacz Format ładunku dla operacji usługi Table Service.
Content-Length Wymagane. Długość treści żądania.
If-Match Wymagane. Klient może określić element ETag dla jednostki w żądaniu, aby porównać go z elementem ETag utrzymywanym przez usługę na potrzeby optymistycznej współbieżności. Operacja aktualizacji zostanie wykonana tylko wtedy, gdy element ETag wysłany przez klienta jest taki, jak wartość utrzymywana przez serwer, co wskazuje, że jednostka nie została zmodyfikowana od czasu pobrania jej przez klienta.

Aby wymusić aktualizację bezwarunkową, If-Match ustaw symbol wieloznaczny (*).
x-ms-client-request-id Opcjonalny. Zapewnia wygenerowaną przez klienta nieprzezroczystą wartość z limitem znaków 1 KiB, który jest rejestrowany w dziennikach analizy po włączeniu rejestrowania analizy magazynu. Używanie tego nagłówka jest wysoce zalecane do korelowania działań po stronie klienta z żądaniami odebranymi przez serwer. Aby uzyskać więcej informacji, zobacz About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests (Informacje o rejestrowaniu usługi Azure Analytics i rejestrowaniu na platformie Azure: używanie dzienników do śledzenia Storage żądań).

Treść żądania

Operacja Update Entity wysyła jednostkę do zaktualizowania jako zestaw jednostek OData, który może być kanałem informacyjnym JSON lub Atom. Aby uzyskać więcej informacji, zobacz Wstawianie i aktualizowanie jednostek.

Uwaga

Format JSON jest zalecanym formatem ładunku i jest jedynym obsługiwanym formatem w wersjach 2015-12-11 i nowszych.

Przykładowe żądanie

JSON (wersje 2013-08-15 i nowsze)

W tym przykładzie przedstawiono przykładowy kod URI żądania, skojarzone nagłówki żądania i treść żądania dla źródła danych JSON.

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

Źródło danych Atom (wersje wcześniejsze niż 2015-12-11)

W tym przykładzie przedstawiono przykładowy kod URI żądania, skojarzone nagłówki żądania i treść żądania dla źródła danych Atom.

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>  

Reakcja

Odpowiedź zawiera kod stanu HTTP i zestaw nagłówków odpowiedzi.

Kod stanu

Pomyślna operacja zwraca kod stanu 204 (Brak zawartości).

Aby uzyskać informacje o kodach stanu, zobacz Kody stanu i błędów oraz Kody błędów usługi tabel.

Nagłówki odpowiedzi

Odpowiedź zawiera następujące nagłówki. Odpowiedź może również zawierać dodatkowe standardowe nagłówki HTTP. Wszystkie standardowe nagłówki są zgodne ze specyfikacją protokołu HTTP/1.1.

Nagłówek odpowiedzi Opis
ETag Element ETag dla jednostki.
x-ms-request-id Ten nagłówek unikatowo identyfikuje żądanie, które zostało wykonane, i może służyć do rozwiązywania problemów z żądaniem. Aby uzyskać więcej informacji, zobacz Troubleshooting API Operations (Rozwiązywanie problemów z operacjami interfejsu API).
x-ms-version Wskazuje wersję usługi Table Service używaną do wykonania żądania. Ten nagłówek jest zwracany w przypadku żądań względem wersji 2009-09-19 i nowszych.
Date Wartość daty/czasu UTC wygenerowana przez usługę, która wskazuje czas, o której została zainicjowana odpowiedź.
x-ms-client-request-id Ten nagłówek może służyć do rozwiązywania problemów z żądaniami i odpowiadającymi odpowiedziami. Wartość tego nagłówka jest równa wartości nagłówka, jeśli jest obecny w żądaniu, a wartość jest co najwyżej 1024 widocznych znaków x-ms-client-request-id ASCII. Jeśli nagłówek x-ms-client-request-id nie jest obecny w żądaniu, ten nagłówek nie będzie obecny w odpowiedzi.

Treść odpowiedzi

Brak.

Przykładowa odpowiedź

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  

Autoryzacja

Tę operację może wykonać właściciel konta i każda osoba mająca sygnaturę dostępu współdzielonych, która ma uprawnienia do wykonania tej operacji.

Uwagi

Podczas aktualizowania jednostki należy określić właściwości PartitionKey systemu i w ramach operacji RowKey aktualizacji.

Element ETag jednostki zapewnia domyślną optymistyczny współbieżność dla operacji aktualizacji. Wartość ETag jest nieprzezroczysta i nie powinna być odczytywana ani polegana. Przed rozpoczęciem operacji aktualizacji usługa tabel sprawdza, czy bieżąca wartość elementu ETag jednostki jest identyczna z wartością elementu ETag uwzględnioną w żądaniu aktualizacji w If-Match nagłówku. Jeśli wartości są identyczne, usługa Table Service określa, że jednostka nie została zmodyfikowana od czasu jej pobrania, a operacja aktualizacji jest kontynuowana.

Jeśli element ETag jednostki różni się od elementu określonego w żądaniu aktualizacji, operacja aktualizacji kończy się niepowodzeniem z kodem stanu 412 (Niepowodzenie warunku wstępnego). Ten błąd wskazuje, że jednostka została zmieniona na serwerze od czasu jej pobrania. Aby rozwiązać ten błąd, ponownie pobierz jednostkę i ponownie wyślij żądanie.

Aby wymusić operację aktualizacji bezwarunkowej, ustaw wartość nagłówka na symbol wieloznaczny If-Match (*) w żądaniu. Przekazanie tej wartości do operacji spowoduje zastąpienie domyślnej optymistycznej współbieżności i zignorowanie wszelkich niezgodności wartości ETag.

Jeśli brakuje nagłówka w żądaniu w wersjach If-Match 2011-08-18 i nowszych, usługa wykonuje operację wstawiania lub zastępowania jednostki (upsert). W wersjach wcześniejszych niż 2011-08-18 usługa zwraca kod stanu 400 (Złe żądanie).

Usługa Table Service nie utrwala null wartości właściwości. Określenie właściwości z wartością jest równoznaczne z null pominięciem tej właściwości w żądaniu.

Uwaga

Możesz skorzystać z obu zachowań, aby usunąć właściwość z jednostki.

Aby jawnie wpisać właściwość, określ odpowiedni typ danych OData, ustawiając atrybut w definicji właściwości w m:type kanale informacyjnym Atom. Aby uzyskać więcej informacji na temat wpisywania właściwości, zobacz Wstawianie i aktualizowanie jednostek.

Każda aplikacja, która może autoryzować i wysłać żądanie HTTP PUT, może zaktualizować jednostkę.

Aby uzyskać informacje o wykonywaniu operacji aktualizacji wsadowych, zobacz Performing Entity Group Transactions (Wykonywanie transakcji grupy jednostek).

Zobacz też

Scalanie jednostki
Autoryzowanie żądań do usługi Azure Storage
Ustawianie nagłówków wersji usługi danych OData
Kody stanu i błędów
Kody błędów usługi Table Service