Exportar (0) Imprimir
Expandir Tudo

Inserir ou substituir entidade

Atualizado: fevereiro de 2014

A operação Insert Or Replace Entity substituirá uma entidade existente ou inserirá uma nova entidade se ela não existir na tabela. Como essa operação pode inserir ou atualizar uma entidade, ela também é conhecida como uma operação upsert.

A solicitação Insert Or Replace Entity pode ser criada da seguinte maneira. HTTPS é recomendado. Substitua os seguintes valores pelos seus próprios valores:

  • myaccount pelo nome da sua conta de armazenamento

  • mytable pelo nome da sua tabela

  • myPartitionKey e myRowKey pelo nome da chave de partição e da chave de linha para as quais a entidade deve ser atualizada

 

Método URI de solicitação Versão de HTTP

PUT

https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey'

HTTP/1.1

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

 

Método URI de solicitação Versão de HTTP

PUT

http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey')

HTTP/1.1

O serviço Tabela no emulador de armazenamento difere de muitas maneiras do serviço Tabela do Windows® Azure™. Para obter mais informações, consulte Diferenças entre o emulador de armazenamento e os serviços de armazenamento do Azure.

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

 

Cabeçalho de solicitação Descrição

Authorization

Obrigatória. Especifica o esquema de autenticação, o nome da conta e a assinatura. Para obter mais informações, consulte Autenticação federada para os Serviços de Armazenamento do Azure.

Date ou x-ms-date

Obrigatória. Especifica o Tempo Universal Coordenado (UTC) para a solicitação. Para obter mais informações, consulte Autenticação federada para os Serviços de Armazenamento do Azure.

x-ms-version

Obrigatório, deve ser definido como 2011-08-18 ou mais recente. 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ória. 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 carga para operações do serviço Tabela.

Content-Length

Obrigatória. O comprimento do corpo da solicitação.

x-ms-client-request-id

Opcional. Fornece um valor opaco, gerado pelo cliente, com um limite de caracteres de 1 KB que é registrado nos logs de análise quando o log de análise de armazenamento está habilitado. É altamente recomendável usar esse cabeçalho para correlacionar atividades do cliente com solicitações recebidas pelo servidor. Para obter mais informações, consulte Sobre o registro em log da Análise de Armazenamento e Log do Windows Azure: Usando logs para rastrear solicitações de armazenamento.

A operação Insert Or Replace Entity envia a entidade a ser inserida como um conjunto de entidades de OData, que pode ser um feed Atom ou JSON. Para obter mais informações, consulte Inserção e atualização de entidades.

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

Uma operação bem-sucedida retorna o código de status 204 (Sem conteúdo).

Para obter mais informações sobre códigos de status, consulte Status e códigos de erro e Códigos de erro do serviço Tabela.

A resposta inclui os cabeçalhos a seguir. A resposta também pode incluir cabeçalhos padrão HTTP adicionais. Todos os cabeçalhos padrão obedecem à especificação de protocolo HTTP/1.1.

 

Cabeçalho de resposta Descrição

ETag

A ETag da entidade.

x-ms-request-id

Esse cabeçalho identifica a solicitação que foi feita de forma exclusiva e pode ser usado para solucionar problemas na solicitação. Para obter mais informações, consulte Solucionando problemas de operações de API.

x-ms-version

Indica a versão do serviço Tabela usado 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 gerado pelo serviço que indica a hora em que a resposta foi iniciada.

Essa operação poderá ser executada pelo proprietário da conta e por qualquer pessoa com uma assinatura de acesso compartilhado que tenha permissão para executar essa operação.

Atom: O exemplo a seguir é uma solicitação e uma resposta de exemplo:

PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')

A solicitação é enviada com os seguintes cabeçalhos:

x-ms-version: 2013-08-15
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
Content-Type: application/atom+xml
x-ms-date: Tue, 12 Nov 2013 18:10:24 GMT
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=
Content-Length: 1135
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 2.0;NetFx

A solicitação é enviada com o seguinte corpo XML:

<?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>2013-11-12T18:09:37.168836Z</updated>
  <author>
    <name />
  </author>
<id>https://myaccount.table.core.windows.net/mytable(PartitionKey='mypartitionkey',RowKey='myrowkey1')</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>myrowkey1</d:RowKey>
      <d:Timestamp m:type="Edm.DateTime">2011-08-30T18:09:37.9557508Z</d:Timestamp>
    </m:properties>
  </content>
</entry>

Depois que a solicitação tiver sido enviada, a resposta a seguir será retornada:

HTTP/1.1 204 No Content

Connection: Keep-Alive
x-ms-request-id: 2c085f8f-11a4-4e1d-bd49-82c6bd87649d
Content-Length: 0
Cache-Control: no-cache
Date: Tue, 12 Nov 2013 18:12:54 GMT
ETag: W/"0x5B168C7B6E589D2"
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 2.0;NetFx
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0

JSON: O exemplo a seguir é uma solicitação e uma resposta JSON de exemplo:

PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')
The request is sent with the following headers:
x-ms-version: 2013-08-15
Content-Type: application/json
x-ms-date: Tue, 30 Aug 2013 18:10:24 GMT
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=
Content-Length: 1135
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx

A solicitação é enviada com o seguinte corpo JSON:

{
   "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"
}

Depois que a solicitação tiver sido enviada, a resposta a seguir será retornada:

HTTP/1.1 204 No Content

Connection: Keep-Alive
x-ms-request-id: 2c085f8f-11a4-4e1d-bd49-82c6bd87649d
Content-Length: 0
Cache-Control: no-cache
Date: Tue, 30 Aug 2013 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

A operação Insert Or Replace Entity não usa o cabeçalho If-Match e deve ser chamada usando a versão 2011-08-18 ou mais recente. Esses atributos distinguem essa operação da Atualizar entidade.

Se a operação Insert Or Replace Entity for usada para substituir uma entidade, todas as propriedades da entidade anterior serão removidas se a nova entidade não as definir. As propriedades com um valor nulo também serão removidas.

Ao chamar a operação Insert or Replace Entity, você deverá especificar valores para as propriedades do sistema PartitionKey e RowKey. Juntas, essas propriedades formam a chave primária e devem ser exclusivas na tabela.

Os valores PartitionKey e RowKey devem ser valores de cadeia de caracteres; cada valor de chave pode ter até 64 KB de tamanho. Se você estiver usando um valor inteiro para o valor de chave, deverá converter o valor inteiro em uma cadeia de caracteres de largura fixa, porque são classificados de forma canônica. Por exemplo, você deve converter o valor 1 em 0000001 para garantir a classificação adequada.

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

Qualquer aplicativo que pode autenticar e enviar uma solicitação HTTP PUT pode inserir ou substituir uma entidade.

Para obter informações sobre a execução de operações upsert em lotes, consulte Executando transações do grupo de entidades.

Consulte também

A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft