Partilhar via


Atualizar Entidade

A Update Entity operação atualiza uma entidade existente numa tabela. A Update Entity operação substitui toda a entidade e pode utilizar a operação para remover propriedades.

Pedir

Pode construir o pedido da Update Entity seguinte forma. É recomendado HTTPS. Substitua myaccount pelo nome da sua conta de armazenamento e mytable pelo nome da sua tabela. Substitua myPartitionKey e myRowKey pelo nome da chave de partição e da chave de linha que identificam a entidade a atualizar.

Método URI do pedido Versão HTTP
PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

O endereço da entidade a atualizar pode assumir vários formulários no URI do pedido. Veja o Protocolo OData para obter detalhes adicionais.

URI do serviço de armazenamento emulado

Quando fizer um pedido contra o serviço de armazenamento emulado, especifique o nome de anfitrião do emulador e a porta do Armazenamento de Tabelas do Azure como 127.0.0.1:10002, seguido do nome da conta de armazenamento emulada.

Método URI do pedido Versão HTTP
PUT http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

O Armazenamento de Tabelas no emulador de armazenamento difere do Armazenamento de Tabelas do Azure de várias formas. Para obter mais informações, veja Diferenças entre o emulador de armazenamento e os serviços de Armazenamento do Azure.

Parâmetros URI

Pode especificar os seguintes parâmetros adicionais no URI do pedido.

Parâmetro Description
timeout Opcional. O timeout parâmetro é expresso em segundos. Para obter mais informações, veja Setting timeouts for Table Storage operations (Definir tempos limite para operações de Armazenamento de Tabelas).

Cabeçalhos do pedido

A tabela seguinte descreve os cabeçalhos de pedido obrigatórios e opcionais.

Cabeçalho do pedido Description
Authorization Obrigatório. Especifica o esquema de autorização, o nome da conta e a assinatura. Para obter mais informações, veja Autorizar pedidos para o Armazenamento do Azure.
Date ou x-ms-date Obrigatório. Especifica a Hora Universal Coordenada (UTC) do pedido. Para obter mais informações, veja Autorizar pedidos para o Armazenamento do Azure.
x-ms-version Opcional. Especifica a versão da operação a utilizar para este pedido. Para obter mais informações, veja Controlo de versões dos serviços de Armazenamento do Azure.
Content-Type Obrigatório. Especifica o tipo de conteúdo do payload. Os valores possíveis são application/atom+xml e application/json.

Para obter mais informações sobre tipos de conteúdo válidos, veja Formato payload para operações de Armazenamento de Tabelas.
Content-Length Obrigatório. O comprimento do corpo do pedido.
If-Match Obrigatório. O cliente pode especificar o ETag para a entidade no pedido, para comparar com o ETag mantido pelo serviço para efeitos de simultaneidade otimista. A operação de atualização só é efetuada se o ETag enviado pelo cliente corresponder ao valor mantido pelo servidor. Esta correspondência indica que a entidade não foi modificada desde que foi obtida pelo cliente.

Para forçar uma atualização incondicional, defina If-Match para o caráter universal (*).
x-ms-client-request-id Opcional. Fornece um valor opaco gerado pelo cliente com um limite de carateres de 1 kibibyte (KiB) que é registado nos registos quando o registo é configurado. Recomendamos vivamente que utilize este cabeçalho para correlacionar as atividades do lado do cliente com os pedidos que o servidor recebe. Para obter mais informações, veja Monitorizar o Armazenamento de Tabelas do Azure.

Corpo do pedido

A Update Entity operação envia a entidade para ser atualizada como um OData conjunto de entidades, que pode ser um JSON ou um feed Atom. Para obter mais informações, veja Inserir e atualizar entidades.

Nota

JSON é o formato de payload recomendado e é o único formato suportado para a versão 2015-12-11 e posterior.

Pedido de exemplo

JSON (versão 2013-08-15 e posterior)

Este exemplo mostra um URI de pedido de exemplo, os cabeçalhos de pedido associados e o corpo do pedido para um 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 (versões anteriores a 2015-12-11)

Este exemplo mostra um URI de pedido de exemplo, os cabeçalhos de pedido associados e o corpo do pedido para um 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>  

Resposta

A resposta inclui um código de estado HTTP e um conjunto de cabeçalhos de resposta.

Código de estado

Uma operação bem-sucedida devolve o código de estado 204 (Sem Conteúdo). Para obter informações sobre códigos de estado, veja Códigos de estado e de erro e códigos de erro do Armazenamento de Tabelas.

Cabeçalhos de resposta

A resposta inclui os seguintes cabeçalhos. A resposta também pode incluir cabeçalhos HTTP padrão adicionais. Todos os cabeçalhos padrão estão em conformidade com a especificação do protocolo HTTP/1.1.

Cabeçalho de resposta Descrição
ETag O ETag para a entidade.
x-ms-request-id Este cabeçalho identifica exclusivamente o pedido que foi feito e pode ser utilizado para resolver o pedido. Para obter mais informações, veja Resolver problemas de operações da API.
x-ms-version Indica a versão do Armazenamento de Tabelas utilizada para executar o pedido. Este cabeçalho é devolvido para pedidos feitos na versão 2009-09-19 e posterior.
Date Um valor de data/hora UTC que indica a hora em que a resposta foi iniciada. O serviço gera este valor.
x-ms-client-request-id Pode utilizar este cabeçalho para resolver problemas de pedidos e respostas correspondentes. O valor deste cabeçalho é igual ao valor do x-ms-client-request-id cabeçalho, se estiver presente no pedido. O valor é, no máximo, 1024 carateres ASCII visíveis. Se o x-ms-client-request-id cabeçalho não estiver presente no pedido, este cabeçalho não estará presente na resposta.

Corpo da resposta

Nenhum.

Resposta de amostra

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  

Autorização

O proprietário da conta pode efetuar esta operação. Além disso, qualquer pessoa com uma assinatura de acesso partilhado que tenha permissão para efetuar esta operação pode fazê-lo.

Observações

Quando atualiza uma entidade, tem de especificar as propriedades e RowKey do PartitionKey sistema como parte da operação de atualização.

Uma entidade ETag fornece simultaneidade otimista predefinida para operações de atualização. O ETag valor é opaco e não deve ser lido ou confiado. Antes de ocorrer uma operação de atualização, o Armazenamento de Tabelas verifica se o valor atual ETag da entidade é idêntico ao ETag valor incluído com o pedido de atualização no If-Match cabeçalho. Se os valores forem idênticos, o Armazenamento de Tabelas determina que a entidade não foi modificada desde que foi obtida e a operação de atualização continua.

Se a entidade for diferente da ETag especificada com o pedido de atualização, a operação de atualização falhará com o código de estado 412 (Falha na Pré-condição). Este erro indica que a entidade foi alterada no servidor desde que foi obtida. Para resolver este erro, obtenha novamente a entidade e volte a reeditar o pedido.

Para forçar uma operação de atualização incondicional, defina o If-Match valor do cabeçalho para o caráter universal (*) no pedido. Transmitir este valor para a operação substitui a simultaneidade otimista predefinida e ignora qualquer erro de correspondência nos ETag valores.

Se o If-Match cabeçalho estiver em falta no pedido na versão 2011-08-18 ou posterior, o serviço efetua uma operação Inserir ou Substituir Entidade (upsert). Em versões anteriores a 2011-08-18, o serviço devolve o código de estado 400 (Pedido Incorreto).

O Armazenamento de Tabelas não persiste null nos valores das propriedades. Especificar uma propriedade com um null valor é equivalente a omitir essa propriedade no pedido.

Nota

Pode tirar partido de qualquer um dos comportamentos para remover uma propriedade de uma entidade.

Para escrever explicitamente uma propriedade, especifique o tipo de dados adequado OData ao definir o m:type atributo dentro da definição de propriedade no feed Atom. Para obter mais informações sobre a escrita de propriedades, veja Inserir e atualizar entidades.

Qualquer aplicação que possa autorizar e enviar um pedido HTTP PUT pode atualizar uma entidade.

Para obter informações sobre a execução de operações de atualização de lotes, veja Executar transações de grupo de entidades.

Ver também

Entidade intercalar
Autorizar pedidos para o Armazenamento do Azure
Definir os cabeçalhos da versão do serviço de dados OData
Códigos de estado e de erro
Códigos de erro do Armazenamento de Tabelas