Condividi tramite


Update Entity

Tramite l'operazione Update Entity viene aggiornata un'entità esistente in una tabella. L'operazione Update Entity sostituisce l'intera entità e è possibile usare l'operazione per rimuovere le proprietà.

Richiesta

È possibile costruire la Update Entity richiesta come indicato di seguito. È consigliato il protocollo HTTPS. Sostituire myaccount con il nome dell'account di archiviazione e mytable con il nome della tabella. Sostituire myPartitionKey e myRowKey con il nome della chiave di partizione e della chiave di riga che identificano l'entità da aggiornare.

Metodo URI richiesta Versione HTTP
PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

L'indirizzo dell'entità da aggiornare può accettare diversi moduli nell'URI della richiesta. Per altre informazioni, vedere il protocollo OData .

URI del servizio di archiviazione emulato

Quando si effettua una richiesta rispetto al servizio di archiviazione emulato, specificare il nome host dell'emulatore e la porta di Archiviazione tabelle di Azure come 127.0.0.1:10002, seguita dal nome dell'account di archiviazione emulato.

Metodo URI richiesta Versione HTTP
PUT http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

Archiviazione tabelle nell'emulatore di archiviazione differisce da Archiviazione tabelle di Azure in diversi modi. Per altre informazioni, vedere Differenze tra l'emulatore di archiviazione e i servizi di archiviazione di Azure.

Parametri URI

È possibile specificare i parametri aggiuntivi seguenti nell'URI della richiesta.

Parametro Descrizione
timeout Facoltativa. Il parametro timeout viene espresso in secondi. Per altre informazioni, vedere Impostazione dei timeout per le operazioni di archiviazione tabelle.

Intestazioni della richiesta

Nella seguente tabella vengono descritte le intestazioni di richiesta obbligatorie e facoltative.

Intestazione della richiesta Descrizione
Authorization Obbligatorio. Specifica lo schema di autorizzazione, il nome dell'account e la firma. Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure.
Date o x-ms-date Obbligatorio. Specifica la data per la richiesta nel fuso orario UTC (Coordinated Universal Time). Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure.
x-ms-version Facoltativa. Specifica la versione dell'operazione da usare per questa richiesta. Per altre informazioni, vedere Controllo delle versioni per i servizi di archiviazione di Azure.
Content-Type Obbligatorio. Specifica il tipo di contenuto del payload. I valori possibili sono application/atom+xml e application/json.

Per altre informazioni sui tipi di contenuto validi, vedere Formato payload per le operazioni di archiviazione tabelle.
Content-Length Obbligatorio. Lunghezza del corpo della richiesta.
If-Match Obbligatorio. Il client può specificare l'oggetto ETag per l'entità nella richiesta, per confrontare con il ETag servizio gestito per lo scopo della concorrenza ottimistica. L'operazione di aggiornamento viene eseguita solo se il ETag client invia corrisponde al valore mantenuto dal server. Questa corrispondenza indica che l'entità non è stata modificata dal momento che è stata recuperata dal client.

Per forzare un aggiornamento incondizionale, impostare If-Match sul carattere jolly (*).
x-ms-client-request-id Facoltativa. Fornisce un valore opaco generato dal client con un limite di caratteri di 1 kibibyte (KiB) registrato nei log quando la registrazione è configurata. È consigliabile usare questa intestazione per correlare le attività lato client con le richieste ricevute dal server. Per altre informazioni, vedere Monitorare Archiviazione tabelle di Azure.

Testo della richiesta

L'operazione Update Entity invia l'entità da aggiornare come OData set di entità, che può essere un feed JSON o Atom. Per altre informazioni, vedere Inserimento e aggiornamento di entità.

Nota

JSON è il formato del payload consigliato ed è l'unico formato supportato per la versione 2015-12-11 e versioni successive.

Richiesta di esempio

JSON (versione 2013-08-15 e versioni successive)

Questo esempio illustra un URI della richiesta di esempio, le intestazioni della richiesta associate e il corpo della richiesta di un feed 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"  
}  

Feed Atom (versioni precedenti al 2015-12-11)

In questo esempio viene illustrato un URI di richiesta di esempio, le intestazioni di richiesta associate e il corpo della richiesta per un feed 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>  

Risposta

Nella risposta sono inclusi un codice di stato HTTP e un set di intestazioni per la risposta.

Codice stato

Un'operazione completata correttamente restituisce il codice di stato 204 (Nessun contenuto). Per informazioni sui codici di stato, vedere Codici di errore e codici di errore e codici di errore di archiviazione tabelle.

Intestazioni di risposta

Nella risposta sono incluse le intestazioni seguenti. La risposta può includere anche intestazioni HTTP aggiuntive e standard. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.

Intestazione risposta Descrizione
ETag Oggetto ETag per l'entità.
x-ms-request-id Questa intestazione identifica in modo univoco la richiesta effettuata e può essere usata per la risoluzione dei problemi della richiesta. Per altre informazioni, vedere Risoluzione dei problemi relativi alle operazioni api.
x-ms-version Indica la versione di Archiviazione tabelle usata per eseguire la richiesta. Questa intestazione viene restituita per le richieste effettuate nella versione 2009-09-19 e successive.
Date Valore di data/ora UTC che indica l'ora in cui è stata avviata la risposta. Il servizio genera questo valore.
x-ms-client-request-id È possibile usare questa intestazione per risolvere le richieste e le risposte corrispondenti. Il valore di questa intestazione è uguale al valore dell'intestazione x-ms-client-request-id , se presente nella richiesta. Il valore è al massimo 1.024 caratteri ASCII visibili. Se l'intestazione x-ms-client-request-id non è presente nella richiesta, questa intestazione non sarà presente nella risposta.

Corpo della risposta

Nessuno.

Risposta di esempio

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  

Autorizzazione

Il proprietario dell'account può eseguire questa operazione. Inoltre, chiunque disponga di una firma di accesso condiviso che dispone dell'autorizzazione per eseguire questa operazione può farlo.

Commenti

Quando si aggiorna un'entità, è necessario specificare le PartitionKey proprietà di sistema e RowKey come parte dell'operazione di aggiornamento.

Un'entità ETag fornisce concorrenza ottimistica predefinita per le operazioni di aggiornamento. Il ETag valore è opaco e non deve essere letto o basato su. Prima che si verifichi un'operazione di aggiornamento, l'archiviazione tabelle verifica che il valore corrente ETag dell'entità sia identico al ETag valore incluso nella richiesta di aggiornamento nell'intestazione If-Match . Se i valori sono identici, Archiviazione tabelle determina che l'entità non è stata modificata dopo il recupero e l'operazione di aggiornamento procede.

Se l'entità è ETag diversa da quella specificata con la richiesta di aggiornamento, l'operazione di aggiornamento non riesce con il codice di stato 412 (Precondizione non riuscita). Questo errore indica che l'entità è stata modificata nel server dopo che è stata recuperata. Per risolvere questo errore, recuperare nuovamente l'entità e riemettere la richiesta.

Per forzare un'operazione di aggiornamento incondizionale, impostare il valore dell'intestazione If-Match sul carattere jolly (*) nella richiesta. Passando questo valore all'operazione viene eseguito l'override della concorrenza ottimistica predefinita e ignora eventuali mancate corrispondenze nei ETag valori.

Se l'intestazione If-Match manca dalla richiesta nella versione 2011-08-18 o successiva, il servizio esegue un'operazione Insert Or Replace Entity (upsert). Nelle versioni precedenti al 2011-08-18, il servizio restituisce il codice di stato 400 (richiesta non valida).

Archiviazione tabelle non mantiene null i valori per le proprietà. La specifica di una proprietà con un null valore equivale a omettere tale proprietà nella richiesta.

Nota

È possibile sfruttare entrambi i comportamenti per rimuovere una proprietà da un'entità.

Per digitare in modo esplicito una proprietà, specificare il tipo di dati appropriato OData impostando l'attributo m:type all'interno della definizione della proprietà nel feed Atom. Per altre informazioni sulla digitazione delle proprietà, vedere Inserimento e aggiornamento di entità.

Qualsiasi applicazione che può autorizzare e inviare una richiesta HTTP PUT può aggiornare un'entità.

Per informazioni sull'esecuzione di operazioni di aggiornamento batch, vedere Esecuzione di transazioni del gruppo di entità.

Vedi anche

Merge Entity
Autorizzare le richieste ad Archiviazione di Azure
Impostazione delle intestazioni della versione del servizio dati OData
Stato e codici errore
Codici di errore di Archiviazione tabelle