Aktualizowanie jednostki

Operacja Update Entity aktualizuje istniejącą jednostkę w tabeli. Operacja Update Entity zastępuje całą jednostkę i możesz użyć operacji , aby usunąć właściwości.

Żądanie

Żądanie można skonstruować Update Entity w następujący sposób. Zalecane jest użycie protokołu HTTPS. Zastąp ciąg myaccount nazwą konta magazynu i mytable nazwą tabeli. Zastąp ciąg myPartitionKey i myRowKey nazwą klucza partycji i klucza wiersza, który identyfikuje 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 Protocol .

Identyfikator URI usługi magazynu emulowanego

Po wysłaniu żądania względem emulowanej usługi magazynu określ nazwę hosta emulatora i port usługi Azure Table Storage jako 127.0.0.1:10002, a następnie nazwę emulowanego 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 Storage w emulatorze magazynu różni się od usługi Azure Table Storage na kilka sposobów. Aby uzyskać więcej informacji, zobacz Różnice między emulatorem magazynu a usługami Azure Storage.

Parametry identyfikatora URI

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

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

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 Przechowywanie wersji usług Azure Storage.
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 na temat prawidłowych typów zawartości, zobacz Format ładunku dla operacji usługi Table Storage.
Content-Length Wymagane. Długość treści żądania.
If-Match Wymagane. Klient może określić ETag dla jednostki w żądaniu, aby porównać je z ETag obsługiwanym przez usługę w celu optymistycznej współbieżności. Operacja aktualizacji jest wykonywana tylko wtedy, gdy ETag wysyłany przez klienta jest zgodny z wartością obsługiwaną przez serwer. To dopasowanie wskazuje, że jednostka nie została zmodyfikowana, ponieważ została pobrana przez klienta.

Aby wymusić bezwarunkową aktualizację, ustaw If-Match znak wieloznaczny (*).
x-ms-client-request-id Opcjonalny. Udostępnia nieprzezroczystą wartość wygenerowaną przez klienta z limitem znaków 1-kibibyte (KiB), który jest rejestrowany w dziennikach podczas konfigurowania rejestrowania. Zdecydowanie zalecamy używanie tego nagłówka do korelowania działań po stronie klienta z żądaniami odbieranymi przez serwer. Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Table Storage.

Treść żądania

Operacja Update Entity wysyła jednostkę do zaktualizowania jako OData zestawu jednostek, co może być źródłem danych JSON lub Atom. Aby uzyskać więcej informacji, zobacz Wstawianie i aktualizowanie jednostek.

Uwaga

Format JSON jest zalecanym formatem ładunku i jest jedynym formatem obsługiwanym w wersji 2015-12-11 lub nowszej.

Przykładowe żądanie

JSON (wersja 2013-08-15 lub nowsza)

W tym przykładzie przedstawiono przykładowy identyfikator 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"  
}  

Kanał informacyjny atomów (wersje starsze niż 2015-12-11)

W tym przykładzie przedstawiono przykładowy identyfikator URI żądania, skojarzone nagłówki żądania i treść żądania dla kanału informacyjnego 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

Operacja zakończona powodzeniem 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 Table Storage.

Nagłówki odpowiedzi

Odpowiedź zawiera następujące nagłówki. Odpowiedź może również zawierać dodatkowe, standardowe nagłówki HTTP. Wszystkie nagłówki standardowe 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 jednoznacznie identyfikuje wykonane żądanie i może służyć do rozwiązywania problemów z żądaniem. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z operacjami interfejsu API.
x-ms-version Wskazuje wersję usługi Table Storage używaną do uruchamiania żądania. Ten nagłówek jest zwracany dla żądań wysyłanych w wersji 2009-09-19 lub nowszej.
Date Wartość daty/godziny UTC wskazująca godzinę, w której zainicjowano odpowiedź. Usługa generuje tę wartość.
x-ms-client-request-id Ten nagłówek służy do rozwiązywania problemów z żądaniami i odpowiadającymi im odpowiedziami. Wartość tego nagłówka jest równa wartości x-ms-client-request-id nagłówka, jeśli jest obecna w żądaniu. Wartość wynosi co najwyżej 1024 widoczne znaki ASCII. x-ms-client-request-id Jeśli nagłówek nie znajduje się 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

Właściciel konta może wykonać tę operację. Ponadto każda osoba z sygnaturą dostępu współdzielonego, która ma uprawnienia do wykonania tej operacji, może to zrobić.

Uwagi

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

ETag Jednostka zapewnia domyślną optymistyczną współbieżność dla operacji aktualizacji. Wartość ETag jest nieprzezroczysta i nie powinna być odczytywana ani polegana. Przed wykonaniem operacji aktualizacji usługa Table Storage sprawdza, czy bieżąca ETag wartość jednostki jest taka sama jak ETag wartość dołączona do żądania aktualizacji w nagłówku If-Match . Jeśli wartości są identyczne, usługa Table Storage określa, że jednostka nie została zmodyfikowana, ponieważ została pobrana, a operacja aktualizacji będzie kontynuowana.

Jeśli jednostka ETag różni się od określonego w żądaniu aktualizacji, operacja aktualizacji kończy się niepowodzeniem z kodem stanu 412 (Warunek wstępny nie powiodło się). Ten błąd wskazuje, że jednostka została zmieniona na serwerze, ponieważ została pobrana. Aby rozwiązać ten błąd, pobierz ponownie jednostkę i ponownie prześlij żądanie.

Aby wymusić bezwarunkową operację aktualizacji, ustaw wartość If-Match nagłówka na symbol wieloznaczny (*) w żądaniu. Przekazanie tej wartości do operacji zastępuje domyślną optymistyczną współbieżność i ignoruje wszelkie niezgodności w ETag wartościach.

If-Match Jeśli w żądaniu brakuje nagłówka w wersji 2011-08-18 lub nowszej, usługa wykonuje operację Insert Or Replace Entity (upsert). W wersjach starszych niż 2011-08-18 usługa zwraca kod stanu 400 (nieprawidłowe żądanie).

Usługa Table Storage nie utrwala null wartości właściwości. Określenie właściwości z wartością null jest równoważne pomijaniu tej właściwości w żądaniu.

Uwaga

Możesz skorzystać z dowolnego zachowania, aby usunąć właściwość z jednostki.

Aby jawnie wpisać właściwość, określ odpowiedni OData typ danych, ustawiając m:type atrybut w definicji właściwości w 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 wysyłać żądanie HTTP PUT , może zaktualizować jednostkę.

Aby uzyskać informacje na temat wykonywania operacji aktualizacji wsadowych, zobacz Wykonywanie transakcji grupy jednostek.

Zobacz też

Scal jednostkę
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 Storage