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