VENDAS: 1-800-867-1389

Inserir ou mesclar entidade

Atualizado: fevereiro de 2014

A operação Insert Or Merge Entity atualizará 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 Merge 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

MERGE

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

MERGE

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ória. 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 Merge Entity envia a entidade a ser inserida como um conjunto de entidades de OData, que pode ser uma carga 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 (No Content).

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:

MERGE 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='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>myrowkey1</d:RowKey>
      <d:Timestamp m:type="Edm.DateTime">2013-11-12T18: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:

MERGE 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
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 Merge Entity usa o verbo MERGE e deve ser chamada usando a versão 2011-08-18 ou mais recente. Além disso, ela não usa o cabeçalho If-Match. Esses atributos distinguem essa operação de Update Entity, embora o corpo da solicitação seja o mesmo para as duas operações.

Se a operação Insert Or Merge Entity for usada para mesclar uma entidade, todas as propriedades da entidade anterior serão retidas se a solicitação não as definir ou não as incluir. As propriedades com um valor nulo também serão retidas.

Ao chamar a operação Insert or Merge 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 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 MERGE pode inserir ou atualizar 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

Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários
Mostrar:
© 2014 Microsoft