Compartilhar via


Update Entity

A operação Update Entity atualiza uma entidade existente em uma tabela. A Update Entity operação substitui toda a entidade e você pode usar a operação para remover propriedades.

Solicitação

Você pode construir a solicitação da Update Entity seguinte maneira. HTTPS é recomendado. Substitua myaccount pelo nome da sua conta de armazenamento e mytable pelo nome da tabela. Substitua myPartitionKey e myRowKey pelo nome da chave de partição e da chave de linha que identificam a entidade a ser atualizada.

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

O endereço da entidade a ser atualizada pode usar vários formulários no URI da solicitação. Consulte o Protocolo OData para obter detalhes adicionais.

URI do serviço de armazenamento emulado

Ao fazer uma solicitação no serviço de armazenamento emulado, especifique o nome do host do emulador e a porta do Armazenamento de Tabelas do Azure como 127.0.0.1:10002, seguido pelo nome da conta de armazenamento emulado.

Método URI da solicitação 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 maneiras. Para obter mais informações, consulte Diferenças entre o emulador de armazenamento e os serviços de Armazenamento do Azure.

Parâmetros do URI

Você pode especificar os seguintes parâmetros adicionais no URI de solicitação.

Parâmetro Descrição
timeout Opcional. O parâmetro timeout é expresso em segundos. Para obter mais informações, consulte Configurando tempos limite para operações de Armazenamento de Tabelas.

Cabeçalhos da solicitação

A tabela a seguir descreve os cabeçalhos de solicitação obrigatórios e opcionais.

Cabeçalho da solicitação Descrição
Authorization Obrigatórios. Especifica o esquema de autorização, o nome da conta e a assinatura. Para saber mais, confira Autorizar solicitações para o Armazenamento do Azure.
Date ou x-ms-date Obrigatórios. Especifica o UTC (Tempo Universal Coordenado) para a solicitação. Para saber mais, confira Autorizar solicitações para o Armazenamento do Azure.
x-ms-version Opcional. Especifica a versão da operação a ser usada para esta solicitação. Para obter mais informações, consulte Controle de versão para os Serviços de Armazenamento do Azure.
Content-Type Obrigatórios. Especifica o tipo de conteúdo da carga. Os valores possíveis são application/atom+xml e application/json.

Para obter mais informações sobre tipos de conteúdo válidos, consulte Formato de conteúdo para operações de Armazenamento de Tabelas.
Content-Length Obrigatórios. O tamanho do corpo da solicitação.
If-Match Obrigatórios. O cliente pode especificar o ETag para a entidade na solicitação, para comparar com o ETag mantido pelo serviço para fins de simultaneidade otimista. A operação de atualização será executada somente se o ETag enviado pelo cliente corresponder ao valor mantido pelo servidor. Essa correspondência indica que a entidade não foi modificada desde que foi recuperada pelo cliente.

Para forçar uma atualização incondicional, defina If-Match como o caractere curinga (*).
x-ms-client-request-id Opcional. Fornece um valor opaco gerado pelo cliente com um limite de caracteres kib (1 kibibyte) que é registrado nos logs quando o registro em log é configurado. É altamente recomendável que você use esse cabeçalho para correlacionar atividades do lado do cliente com solicitações recebidas pelo servidor. Para obter mais informações, consulte Monitorar o Armazenamento de Tabelas do Azure.

Corpo da solicitação

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, consulte Inserindo e atualizando entidades.

Observação

JSON é o formato de conteúdo recomendado e é o único formato com suporte para a versão 2015-12-11 e posterior.

Solicitação de exemplo

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

Este exemplo mostra um URI de solicitação de exemplo, os cabeçalhos de solicitação associados e o corpo da solicitação 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 11/12/2015)

Este exemplo mostra um URI de solicitação de exemplo, os cabeçalhos de solicitação associados e o corpo da solicitação de 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 status HTTP e um conjunto de cabeçalhos de resposta.

Código de status

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

Cabeçalhos de resposta

A resposta inclui os cabeçalhos a seguir. 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 Esse cabeçalho identifica exclusivamente a solicitação que foi feita e pode ser usado para solucionar problemas da solicitação. Para obter mais informações, consulte Solução de problemas de operações de API.
x-ms-version Indica a versão do Armazenamento de Tabelas usada para executar a solicitação. Esse cabeçalho é retornado para solicitações feitas na versão 2009-09-19 e mais recente.
Date Um valor de data/hora UTC que indica a hora em que a resposta foi iniciada. O serviço gera esse valor.
x-ms-client-request-id Você pode usar esse cabeçalho para solucionar problemas de solicitações e respostas correspondentes. O valor desse cabeçalho será igual ao valor do x-ms-client-request-id cabeçalho, se ele estiver presente na solicitação. O valor é no máximo 1.024 caracteres ASCII visíveis. Se o x-ms-client-request-id cabeçalho não estiver presente na solicitação, esse cabeçalho não estará presente na resposta.

Corpo da resposta

Nenhum.

Resposta de exemplo

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 executar essa operação. Além disso, qualquer pessoa com uma assinatura de acesso compartilhado que tenha permissão para executar essa operação pode fazer isso.

Comentários

Ao atualizar uma entidade, você deve especificar as propriedades do PartitionKey sistema e RowKey como parte da operação de atualização.

Uma entidade fornece ETag simultaneidade otimista padrão para operações de atualização. O ETag valor é opaco e não deve ser lido ou confiado. Antes que ocorra 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 na solicitação de atualização no If-Match cabeçalho . Se os valores forem idênticos, o Armazenamento de Tabelas determinará que a entidade não foi modificada desde que foi recuperada e a operação de atualização continuará.

Se a entidade for ETag diferente daquela especificada com a solicitação de atualização, a operação de atualização falhará com status código 412 (Falha na pré-condição). Esse erro indica que a entidade foi alterada no servidor desde a recuperação. Para resolver esse erro, recupere novamente a entidade e reedite a solicitação.

Para forçar uma operação de atualização incondicional, defina o valor do cabeçalho If-Match como o caractere curinga (*) na solicitação. Passar esse valor para a operação substitui a simultaneidade otimista padrão e ignora qualquer incompatibilidade de ETag valores.

Se o If-Match cabeçalho estiver ausente da solicitação na versão 2011-08-18 ou posterior, o serviço executará uma operação Inserir ou Substituir Entidade (upsert). Em versões anteriores a 18-08-2011, o serviço retorna status código 400 (Solicitação Incorreta).

O Armazenamento de Tabelas não persiste null valores para propriedades. Especificar uma propriedade com um null valor é equivalente a omitir essa propriedade na solicitação.

Observação

Você pode aproveitar qualquer comportamento para remover uma propriedade de uma entidade.

Para digitar explicitamente uma propriedade, especifique o tipo de dados apropriado OData definindo o m:type atributo dentro da definição de propriedade no feed Atom. Para obter mais informações sobre como digitar propriedades, consulte Inserindo e atualizando entidades.

Qualquer aplicativo que possa autorizar e enviar uma solicitação HTTP PUT pode atualizar uma entidade.

Para obter informações sobre como executar operações de atualização em lote, consulte Executando transações de grupo de entidades.

Confira também

Merge Entity
Autorizar solicitações para o Armazenamento do Azure
Definindo os cabeçalhos de versão do serviço de dados OData
Status e códigos de erro
Códigos de erro do Armazenamento de Tabelas