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